Uploaded image for project: 'Jira Software Cloud'
  1. Jira Software Cloud
  2. JSWCLOUD-19046

JPO times out when creating a plan excluding large amounts of issues (~1,000+)

    XMLWordPrintable

Details

    Description

      NOTE: This bug report is for JIRA Portfolio Cloud. Using JIRA Portfolio Server? See the corresponding bug report.

      Summary

      JPO is timing out when creating a plan and importing only a few issues from a huge list of possible issues to be imported.

      Environment

      Portfolio for JIRA v2.1.5-OD-002-D20161109T020439

      Steps to Reproduce

      1. Create a board
      2. Add 2000 tickets to this board
      3. Try to create a plan from that board selecting a single issue (or only a couple of them)

      Expected Results

      JPO would import only the selected issues.

      Actual Results

      JPO is timing out.
      After a couple of minutes the following error message will show up:

      Bummer, something has gone terribly wrong here...
      Please try refreshing the page. If the issue continues, please copy and paste the information in the Details button below and send to your JIRA Administrator or Atlassian Support.
      Unexpected error result.
      
      <!doctype html> <html> <head> <meta charset="utf-8"> <meta
      name="description" content=""> <meta name="viewport"
      content="width=device-width, initial-scale=1"> <title>Atlassian Cloud
      Notifications - Page Unavailable</title> <link rel="stylesheet" href="//
      aui-cdn.atlassian.com/aui-adg/5.8.15/css/aui.css"> <script src="//
      cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.2/moment.js"></script> <script
      src="//
      cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.2.1/moment-timezone-with-data.js"></script>
      <script src="//
      cdnjs.cloudflare.com/ajax/libs/require.js/2.1.20/require.min.js"></script>
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
      <script src="//aui-cdn.atlassian.com/aui-adg/5.8.15/js/aui-soy.js"
      type="text/javascript"></script> <script src="//
      aui-cdn.atlassian.com/aui-adg/5.8.15/js/aui.min.js"
      type="text/javascript"></script> <script src="//
      aui-cdn.atlassian.com/aui-adg/5.8.15/js/aui-experimental.min.js"></script>
      <!--[if lt IE 9]><link rel="stylesheet" href="//
      cdnjs.cloudflare.com/ajax/libs/aui/5.8.15/aui/css/aui-ie.css"
      media="all"><![endif]--> <!--[if IE 9]><link rel="stylesheet" href="//
      cdnjs.cloudflare.com/ajax/libs/aui/5.8.15/aui/css/aui-ie9.css"
      media="all"><![endif]--> <!--[if lt IE 9]><script src="//
      cdnjs.cloudflare.com/ajax/libs/aui/5.8.15/aui/js/aui-ie.js"></script><![endif]-->
      <script type="text/javascript"> (function () { var smartStatusBaseUrl; if
      (location.hostname == 'localhost') { smartStatusBaseUrl = location.protocol
      + '//' + location.hostname + ':' + location.port + '/'; } else if
      (location.hostname.indexOf("smart-status") > -1 ) { smartStatusBaseUrl =
      location.protocol + '//' + location.hostname + '/'; } else {
      smartStatusBaseUrl = location.protocol + '//' + location.hostname +
      '/status/'; } $('<link/>', { rel: 'stylesheet', type: 'text/css', href:
      smartStatusBaseUrl + 'styles/smart-status.css' }).appendTo('head');
      define('smart-status/baseUrl', function () { return smartStatusBaseUrl; });
      requirejs.config({ baseUrl: smartStatusBaseUrl + 'js/', paths: { backbone:
      '//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min', moment:
      '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min', react: '//
      cdnjs.cloudflare.com/ajax/libs/react/0.14.0-rc1/react-with-addons.min',
      'react-dom': '//
      cdnjs.cloudflare.com/ajax/libs/react/0.14.0-rc1/react-dom.min', underscore:
      '//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min' },
      bundles: { 'smart-status-all': ['smart-status/app'] }, waitSeconds: 15 });
      }()); require(['smart-status/app'], function (SmartStatusApp) {
      SmartStatusApp.start(); }, function (e) { console.error(e);
      AJS.$('#notifications').replaceWith('<div class="aui-page-panel"><div
      class="aui-page-header-inner"><section
      class="aui-page-panel-content"><h1>Page unavailable</h1><div
      class="aui-page-notification-description">The requested page failed to
      load. If the problem persists, please contact Cloud Support.</div><br><p><a
      href="https://support.atlassian.com/servicedesk/customer/jst" button
      class="aui-button aui-button-primary">Create a Support
      request</a></p></section></div></div>'); }); </script> </head> <body
      class="aui-layout aui-page-notification aui-page-size-medium"
      data-aui-version="5.7.0"> <div id="smart-status-page"> <section
      id="content" role="main"> <div id="notifications"> <div
      id="search-loading-spinner" class="loading-spinner" style="display: block;"
      align="center"> <table> <tr> <td width="100%" height="344px"><div
      align="center"> <svg height="97.33333333333333" version="1.1"
      width="97.33333333333333" xmlns="http://www.w3.org/2000/svg"
      style="overflow: hidden; position: relative;"><desc
      style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Created with Raphaël
      2.1.0</desc><defs style="-webkit-tap-highlight-color: rgba(0, 0, 0,
      0);"></defs><g><animateTransform attributeType="xml"
      attributeName="transform" type="rotate" from="0 48.66 48.66" to="360 48.66
      48.66" dur="0.96s" additive="replace" repeatCount="indefinite"
      /><animateTransform attributeType="xml" attributeName="transform"
      type="rotate" from="30 48.66 48.66" to="0 48.66 48.66" dur="0.08s"
      additive="sum" repeatCount="indefinite" /><path fill="none"
      stroke="#707070"
      d="M48.666666666666664,25.333333333333332L48.666666666666664,8.666666666666664"
      stroke-width="8.666666666666666" stroke-linecap="round" opacity="0.25"
      style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); stroke-linecap:
      round; opacity: 0.25;"></path><path fill="none" stroke="#707070"
      d="M60.33333333333333,28.459407245029762L68.66666666666666,14.025650515289115"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.3333333333333333" style="-webkit-tap-highlight-color: rgba(0, 0,
      0, 0); stroke-linecap: round; opacity: 0.3333333333333333;"></path><path
      fill="none" stroke="#707070"
      d="M68.87392608830356,37L83.30768281804421,28.666666666666664"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.4166666666666667" style="-webkit-tap-highlight-color: rgba(0, 0,
      0, 0); stroke-linecap: round; opacity: 0.4166666666666667;"></path><path
      fill="none" stroke="#707070"
      d="M72,48.666666666666664L88.66666666666666,48.666666666666664"
      stroke-width="8.666666666666666" stroke-linecap="round" opacity="0.5"
      style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); stroke-linecap:
      round; opacity: 0.5;"></path><path fill="none" stroke="#707070"
      d="M68.87392608830356,60.33333333333333L83.30768281804421,68.66666666666666"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.5833333333333334" style="-webkit-tap-highlight-color: rgba(0, 0,
      0, 0); stroke-linecap: round; opacity: 0.5833333333333334;"></path><path
      fill="none" stroke="#707070"
      d="M60.333333333333336,68.87392608830356L68.66666666666669,83.30768281804421"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.6666666666666666" style="-webkit-tap-highlight-color: rgba(0, 0,
      0, 0); stroke-linecap: round; opacity: 0.6666666666666666;"></path><path
      fill="none" stroke="#707070"
      d="M48.666666666666664,72L48.666666666666664,88.66666666666666"
      stroke-width="8.666666666666666" stroke-linecap="round" opacity="0.75"
      style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); stroke-linecap:
      round; opacity: 0.75;"></path><path fill="none" stroke="#707070"
      d="M37,68.87392608830356L28.66666666666667,83.30768281804421"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.8333333333333334" style="-webkit-tap-highlight-color: rgba(0, 0,
      0, 0); stroke-linecap: round; opacity: 0.8333333333333334;"></path><path
      fill="none" stroke="#707070"
      d="M28.459407245029766,60.333333333333336L14.025650515289122,68.66666666666669"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.9166666666666666" style="-webkit-tap-highlight-color: rgba(0, 0,
      0, 0); stroke-linecap: round; opacity: 0.9166666666666666;"></path><path
      fill="none" stroke="#707070"
      d="M25.333333333333332,48.666666666666664L8.666666666666664,48.66666666666667"
      stroke-width="8.666666666666666" stroke-linecap="round" opacity="0"
      style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); stroke-linecap:
      round; opacity: 0;"></path><path fill="none" stroke="#707070"
      d="M28.459407245029755,37.000000000000014L14.025650515289101,28.66666666666669"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.08333333333333333" style="-webkit-tap-highlight-color: rgba(0,
      0, 0, 0); stroke-linecap: round; opacity:
      0.08333333333333333;"></path><path fill="none" stroke="#707070"
      d="M36.999999999999986,28.45940724502977L28.666666666666647,14.02565051528913"
      stroke-width="8.666666666666666" stroke-linecap="round"
      opacity="0.16666666666666666" style="-webkit-tap-highlight-color: rgba(0,
      0, 0, 0); stroke-linecap: round; opacity:
      0.16666666666666666;"></path></g></svg><p style="padding-top:1em;
      font-weight:500; color:#707070;">Loading notifications...</p></div> </td>
      </tr> </table> </div> </div> </section> <footer id="footer"> <section
      class="footer-body"> <ul> <li><a href="
      https://www.atlassian.com/cloud/status">Atlassian Cloud Status</a></li>
      <li><a href="https://confluence.atlassian.com/display/cloud/What's+New">Release
      Summary</a></li> <li><a href="
      https://confluence.atlassian.com/display/Cloud/Atlassian+Cloud+Documentation">Documentation</a></li>
      <li><a href="https://answers.atlassian.com">Answers</a></li> </ul> <div
      id="footer-logo"><a href="http://www.atlassian.com/"
      target="_blank">Atlassian</a></div> </section> </footer> </div> </body>
      </html>
      
      ===============
      === Request ===
      ===============
      
      URL: /rest/jpo/1.0/plans
      Type: POST
      Status: 504
      
      ===================
      === Client Info ===
      ===================
      
      User agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,
      like Gecko) Chrome/54.0.2840.71 Safari/537.36
      Local time: Tue Nov 01 2016 14:41:53 GMT-0400 (Eastern Daylight Time)
      
      ===================
      === Plugin Info ===
      ===================
      
      Plugin build: 2.1.2-OD-004-D20161018T080005
      SEN: Unknown
      
      ===================
      === System Info ===
      ===================
      
      JIRA Title: JIRA
      JIRA Version: 1000.482.3
      Agile Version: 1000.135.0
      

      Notes

      When having more than 1000 issues to be possibly added into the scope, if not selecting them while creating the plan, JPO will have to manually (one-by-one) set a property that the issue are excluded from the plan, which is possibly causing the timeout.

      Workaround

      1. Create plan with all issues and exclude the ones we don't want later:
        A workaround would be to create the plan with all issues initially and then exclude them from the plan in batches by directly selecting them in the Scope view and committing these changes.
      2. Create filter with the tickets that should be part of plan and use that as Portfolio data source
        Downside: losing data association to boards.
        Another option is to create a filter in JIRA that only returns the issues you need and to select this as your plans data source. The problem here is that you'll likely lose the main ability of live plans, which is to update the issues in their sources.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ediel Elisa [Atlassian]
              Votes:
              3 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: