Plan Failing to Load with 500 error
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
When attempting to load a plan, user gets a 500 error:
Environment
Advanced Roadmaps for Jira (Data Center/Server)
Diagnosis
In the application-jira.log, it shows the errors:
2022-02-25 01:02:17,456+0000 http-nio-8080-exec-80 url: /internal-error ERROR [c.a.j.web.servlet.InternalServerErrorServlet] {errorId=7a29f4f0-bd97-47e3-b236-01b2eafeb06e, interpretedMsg=, cause=java.lang.NullPointerException, stacktrace=java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:877) [guava-26.0-jre.jar:?]
at com.google.common.collect.SingletonImmutableSet.<init>(SingletonImmutableSet.java:44) [guava-26.0-jre.jar:?]
at com.google.common.collect.ImmutableSet.of(ImmutableSet.java:85) [guava-26.0-jre.jar:?]
at com.google.common.collect.ImmutableSet.construct(ImmutableSet.java:171) [guava-26.0-jre.jar:?]
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:212) [guava-26.0-jre.jar:?]
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:229) [guava-26.0-jre.jar:?]
at com.atlassian.rm.jpo.core.plan.data.DefaultDeepPlan.create(DefaultDeepPlan.java:107) [?:?]
at com.atlassian.rm.jpo.core.plan.sql.QueryDslPlanPersistence.createDeepPlanFromTuple(QueryDslPlanPersistence.java:974) [?:?]
at com.atlassian.rm.jpo.core.plan.sql.QueryDslPlanPersistence.lambda$get$18(QueryDslPlanPersistence.java:839) [?:?]
at com.atlassian.rm.common.persistence.DefaultDatabaseProvider.lambda$run$0(DefaultDatabaseProvider.java:24) [?:?]
at com.atlassian.rm.common.persistence.env.JiraDatabaseProvider.lambda$execute$0(JiraDatabaseProvider.java:34) [?:?]
at com.atlassian.rm.common.bridges.jira.persistence.JiraDatabaseProviderBridgeImpl.execute(JiraDatabaseProviderBridgeImpl.java:59) [?:?]
at com.atlassian.rm.common.persistence.env.JiraDatabaseProvider.execute(JiraDatabaseProvider.java:34) [?:?]
at com.atlassian.rm.common.persistence.DefaultDatabaseProvider.run(DefaultDatabaseProvider.java:24) [?:?]
at com.atlassian.rm.jpo.core.plan.sql.QueryDslPlanPersistence.get(QueryDslPlanPersistence.java:716) [?:?]
at com.atlassian.rm.jpo.core.plan.DefaultPlanService.getPlan(DefaultPlanService.java:396) [?:?]
at com.atlassian.rm.jpo.core.plan.DefaultPlanService.getPlan(DefaultPlanService.java:404) [?:?]
at com.atlassian.rm.jpo.plugin.views.plan.common.CachedPlanInformationComponent.load(CachedPlanInformationComponent.java:71) [?:?]
at com.atlassian.rm.jpo.plugin.views.plan.view.standard.PlanView.execute(PlanView.java:127) [?:?]
at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:39) [webwork-1.4-atlassian-30.jar:?]
at webwork.interceptor.NestedInterceptorChain.proceed(NestedInterceptorChain.java:31) [webwork-1.4-atlassian-30.jar:?]
at webwork.interceptor.ChainedInterceptor.intercept(ChainedInterceptor.java:16) [webwork-1.4-atlassian-30.jar:?]
at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:35) [webwork-1.4-atlassian-30.jar:?]
at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:225) [webwork-1.4-atlassian-30.jar:?]
at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:154) [webwork-1.4-atlassian-30.jar:?]
at com.atlassian.jira.web.dispatcher.JiraWebworkActionDispatcher.service(JiraWebworkActionDispatcher.java:139) [classes/:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) [servlet-api.jar:?]
In the HAR file, the HTTP response shows:
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Es ist ein Fehler aufgetreten</title><script type="text/javascript">contextPath = "";</script><link type='text/css' rel='stylesheet' href='/static-assets/metal-all.css' media='all'><script src='/static-assets/jquery-min.js'></script><script src='/static-assetsx" contentEditable readonly><h2>Technische Details</h2><p x: <strong id="log-referral-id">41094378-f0f0-430f-8019-cba00f4dbcc9</strong></p><div class="info-section" id="causePanel"><h2>Ursache</h2><p>Verweiser-URL: <b>BASEURL?permissionViolation=true&os_destination=%2Fsecure%2FPortfolioPlanView.jspa%3Fid%3D14%26sid%3D14&page_caps=&user_role=</b></p><pre>java.lang.NullPointerException</pre><blockquote id="stacktrace" style="overflow-x: auto;"><pre>java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:903) [guava-32.1.1-jre.jar:?]
at com.google.common.collect.SingletonImmutableSet.<init>(SingletonImmutableSet.java:40) [guava-32.1.1-jre.jar:?]
...
at com.atlassian.rm.jpo.core.plan.data.DefaultDeepPlan.create(DefaultDeepPlan.java:107) [?:?]
at com.atlassian.rm.jpo.core.plan.sql.QueryDslPlanPersistence.createDeepPlanFromTuple(QueryDslPlanPersistence.java:974) [?:?]
at com.atlassian.rm.jpo.core.plan.sql.QueryDslPlanPersistence.lambda$get$18(QueryDslPlanPersistence.java:839) [?:?]
at com.atlassian.rm.common.persistence.DefaultDatabaseProvider.lambda$run$0(DefaultDatabaseProvider.java:24) [?:?]
at com.atlassian.rm.common.persistence.env.JiraDatabaseProvider.lambda$execute$0(JiraDatabaseProvider.java:34) [?:?]
at com.atlassian.rm.common.bridges.jira.persistence.JiraDatabaseProviderBridgeImpl.execute(JiraDatabaseProviderBridgeImpl.java:59) [?:?]
at com.atlassian.rm.common.persistence.env.JiraDatabaseProvider.execute(JiraDatabaseProvider.java:34) [?:?]
at com.atlassian.rm.common.persistence.DefaultDatabaseProvider.run(DefaultDatabaseProvider.java:24) [?:?]
at com.atlassian.rm.jpo.core.plan.sql.QueryDslPlanPersistence.get(QueryDslPlanPersistence.java:716) [?:?]
Cause
The database table, AO_D9132D_EXCLUDED_STATUSES, is missing data in the STATUS
column. Example:
ID | PLAN_ID | STATUS
------------------
1 | 3 | 10001
2 | 6 | 10100
3 | 9 |
- Accessing plan 9 will result in error
After a migration from Atlassian Cloud, the column STATUS_ID
instead of STATUS. The same database table may look something like this:
ID | PLAN_ID | STATUS_ID | STATUS
---------------------------------
1 | 3 | 10001 |
2 | 6 | 10100 |
3 | 9 | 10300 |
- In this case,
STATUS
column is empty and instead we see data inSTATUS_ID
- All plans listed will result in error until the data is moved to the correct column.
Solution
- Update the database and set and ID into the
STATUS
column.- Any existing ID for status is fine as this will later be fixed via the GUI.
- Access the Plan Exclusion Rules via https://BASEURL/secure/PortfolioPlanView.jspa?id=PLAN_ID#settings/setExclusionRules
- Replace BASEURL to your Jira Base URL.
- Replace PLAN_ID in the URL to the plan id that has the problem before copy and paste it in the web browser.
- To find the plan id, check the Plan URL that get the errors. For example, https://BASEURL/jira/secure/PortfolioPlanView.jspa?id=9&sid=20 (9 is the plan id)
- In the "Excluded Statuses" section, update the statuses to exclude the proper statuses
- Take a screenshot of the existing exclusion rules for you to take note and reconfigure later.
- Remove all the existing rules.
- Update the statuses to exclude the proper statuses.
- Refresh the page.
- Try access the plan again.
This should be updated to show:
ID | PLAN_ID | STATUS_ID | STATUS --------------------------------- 1 | 3 | 10001 | 10001 2 | 6 | 10100 | 10100 3 | 9 | 10300 | 10300