Uploaded image for project: 'Jira Software Data Center'
  1. Jira Software Data Center
  2. JSWSERVER-25528

Accessing a classic plan from advanced roadmaps fails with an error on the UI

    XMLWordPrintable

Details

    Description

      Issue Summary

      Classic plans are not supported on Advanced Roadmaps for quite some time.
      Trying to access a classic plan on recent versions would show a simple page to the user with a link explaining how to migrate the plan to a supported version.

      On latest Jira Software versions, trying to access a classic plan is still directing to that page, but it's also showing a popup error.

      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.

      This error occurs because the external library jgrapht has been upgraded from version 0.9 to 1.4 and a referenced method is no longer available.
      While this is currently a cosmetic error, which can be dismissed, this may cause confusion to users.

      Steps to Reproduce

      1. Install and configure vanilla instance of Jira Software Data Center version 8.5.9 – this is to use an old version of the AR4J App.
      2. Create a software project with sample data.
      3. Install AR4J (portfolio) version 2.21.0.
      4. Create a classic plan.
      5. Update AR4J App to the latest version supported, which is 3.29.8.
      6. Accessing the View Plans page would show the classic plans.
      7. Accessing one of the classic plans would show no longer supported information with the link on how to migrate the plan.
      8. Upgrade Jira to version 9.4.14 - tThis will upgrade AR4J to the bundled version.
      9. Try to access a classic plan.

      Expected Results

      The page loads without any error and still shows the message that classical plans are no longer supported.

      Actual Results

      The page with the classical plans are no longer supported loads with a pop-error as below.

      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.

      Clicking on Show details presents more information about the error.

      Unspecified error: {"message":"org/jgrapht/experimental/dag/DirectedAcyclicGraph$CycleFoundException","status-code":500,"stack-trace":"java.lang.NoClassDefFoundError: org/jgrapht/experimental/dag/DirectedAcyclicGraph$CycleFoundException
        at com.radiantminds.roadmap.jira.common.components.extension.issues.data.hierarchy.HierarchicalJiraIssueDataExtractor.getData(HierarchicalJiraIssueDataExtractor.java:26)
        at com.radiantminds.roadmap.jira.common.components.extension.issues.data.IssueDataRequestHandler.getData(IssueDataRequestHandler.java:64)
        at com.radiantminds.roadmap.jira.common.components.extension.JiraWorkItemExtension.getExtensionLinkData(JiraWorkItemExtension.java:179)
        at com.radiantminds.roadmap.common.extensions.workitems.WorkItemEnrichmentUtils.enrichItemsWithStatusAndProgress(WorkItemEnrichmentUtils.java:47)
        at com.radiantminds.roadmap.common.data.persistence.ao.entities.workitems.workitem.sql.select.SubqueryDataEnrichment.enrichItems(SubqueryDataEnrichment.java:72)
        at com.radiantminds.roadmap.common.data.persistence.ao.entities.workitems.workitem.sql.select.WorkItemSelectQueryParser.parse(WorkItemSelectQueryParser.java:174)
        at com.radiantminds.roadmap.common.data.persistence.ao.entities.workitems.workitem.sql.select.WorkItemSelectQueryBuilder$1.handleResult(WorkItemSelectQueryBuilder.java:397)
        at com.radiantminds.roadmap.common.data.persistence.ao.entities.workitems.workitem.sql.select.WorkItemSelectQueryBuilder$1.handleResult(WorkItemSelectQueryBuilder.java:178)
        at com.radiantminds.roadmap.common.data.persistence.ao.sql.BaseAOPersistenceSQL.sql(BaseAOPersistenceSQL.java:307)
        at com.radiantminds.roadmap.common.data.persistence.ao.sql.BaseAOPersistenceSQL.sql(BaseAOPersistenceSQL.java:265)
        at com.radiantminds.roadmap.common.data.persistence.ao.sql.BaseAOPersistenceSQL.sql(BaseAOPersistenceSQL.java:261)
        at com.radiantminds.roadmap.common.data.persistence.ao.entities.workitems.workitem.sql.select.WorkItemSelectQueryBuilder.execute(WorkItemSelectQueryBuilder.java:178)
        at com.radiantminds.roadmap.common.data.persistence.ao.entities.workitems.workitem.PortfolioActiveObjectsWorkItemPersistence.listFullWorkItemsForPlanAndFilter(PortfolioActiveObjectsWorkItemPersistence.java:331)
        at com.radiantminds.roadmap.common.rest.services.workitems.PlanWorkItemServiceHandler$Impl.getFiltered(PlanWorkItemServiceHandler.java:221)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.radiantminds.roadmap.common.handlers.SecuredInvocationHandler.invoke(SecuredInvocationHandler.java:159)
        at com.sun.proxy.$Proxy3147.getFiltered(Unknown Source)
        at com.radiantminds.roadmap.common.rest.services.workitems.PlanWorkItemService.getFiltered(PlanWorkItemService.java:117)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker.lambda$_dispatch$0(DispatchProviderHelper.java:181)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.lambda$invokeMethodWithInterceptors$0(DispatchProviderHelper.java:81)
        at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:53)
        at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:42)
        at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:53)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:106)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:180)
        at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
        at com.radiantminds.roadmap.common.handlers.MauTrackingDispatcher.dispatch(MauTrackingDispatcher.java:28)
      ...
      Caused by: java.lang.ClassNotFoundException: org.jgrapht.experimental.dag.DirectedAcyclicGraph$CycleFoundException not found by com.radiantminds.roadmaps-jira [197]
        at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1585)
        at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
        at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1970)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
        ... 304 more\n"}
      
      ===================
      === Client Info ===
      ===================
      
      User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0
      Local time: Tue Jan 30 2024 16:12:50 GMT-0300 (Brasilia Standard Time)
      
      ===============
      === Request ===
      ===============
      
      URL: /j859/rest/roadmap/1.0/plans/1/workitems/filter.json?planVersion=1&clientId=5a9cd9b6-5081-4f9c-adea-ccc68eac782c
      Type: POST
      Status: 500
      Data: "{\"limit\":500}"
      
      ===================
      === System Info ===
      ===================
      
      Plugin build: 9.4.14
      
      Jira Title: Jira
      Jira Edition: $jiraEdition
      Jira Version: 9.4.14
      SEN: SEN-500
      



      Previous versions of Jira would ship the external library on the following version:

       JGraphT - Core(org.jgrapht:jgrapht-core:0.9.2)
      

      Current versions are shipped with the following version, which doesn't have the DirectedAcyclicGraph.CycleFoundException exception anymore:

      JGraphT - Core(org.jgrapht:jgrapht-core:1.4.0)
      JGraphT - I/O(org.jgrapht:jgrapht-io:1.4.0)
      

      Workaround

      Currently there is no known workaround for this behavior. A workaround will be added here when available.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              tmasutti Thiago Masutti
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: