-
Bug
-
Resolution: Unresolved
-
Medium (View bug fix roadmap)
-
None
-
9.12.6, 9.4.20, 9.12.8
-
9.04
-
12
-
Severity 3 - Minor
-
22
-
Issue Summary
In some cases, the Advanced Roadmap application fails to be loaded at Jira startup due class dependency errors, and as a result:
- The Advanced Roadmaps for Jira application is disabled and can't be enabled from the UI
- All Advanced Roadmaps features are missing, such as the Plans tab (which is normally listed in the Top Bar menu)
Environment
- This issue is usually observed after an upgrade to Jira Software 9.4.x or 9.12.x.
- This issue is not replicable in a fresh vanilla Jira Software installation. However, it is replicable by customers who are using in house custom plugins
Steps to replicate
- Install a fresh vanilla Jira Software 9.12.6 application
- Observe that the Advanced Roadmaps is enabled (in Manage Apps), and that the Plans tab is listed in the Top Bar menu
- Add some custom jar files to the folder <JIRA_HOME>/plugins/installed-plugins/
- Restart the Jira application
Expected results
In most cases, the Advanced Roadmaps app is successfully loaded at Jira startup
Actual results
In some cases, the following happens:
- The Advanced Roadmaps for Jira application is disabled and can't be enabled from the UI
- The following errors can be found in the Jira logs during startup time:
- Error 1
2024-05-22 13:13:56,992+0000 ThreadPoolAsyncTaskExecutor::Thread 12 ERROR [o.e.g.b.e.i.dependencies.startup.DependencyWaiterApplicationContextExecutor] Unable to create application context for [com.radiantminds.roadmaps-jira], unsatisfied dependencies: none org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'exportedSyncService': Unsatisfied dependency expressed through constructor parameter 2; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'portfolioActiveObjectsWorkItemPersistence': Unsatisfied dependency expressed through constructor parameter 4; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jiraWorkItemExtension': Unsatisfied dependency expressed through constructor parameter 7; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.DefaultIssueLinkServiceBridgeProxy': Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.IssueLinkServiceBridgeImpl': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.atlassian.jira.config.properties.ApplicationProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport(value="")} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921) at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:57) at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:322) at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:287) at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:137) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'portfolioActiveObjectsWorkItemPersistence': Unsatisfied dependency expressed through constructor parameter 4; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jiraWorkItemExtension': Unsatisfied dependency expressed through constructor parameter 7; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.DefaultIssueLinkServiceBridgeProxy': Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.IssueLinkServiceBridgeImpl': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.atlassian.jira.config.properties.ApplicationProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport(value="")} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ... 19 more
- Error 2
******************************************************************************************************************************************************************************************************** ___ FAILED PLUGIN REPORT _____________________ 3 plugins failed to load during Jira startup. 'com.radiantminds.roadmaps-jira' - 'Advanced Roadmaps for Jira' failed to load. Error creating bean with name 'exportedSyncService': Unsatisfied dependency expressed through constructor parameter 2; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'portfolioActiveObjectsWorkItemPersistence': Unsatisfied dependency expressed through constructor parameter 4; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jiraWorkItemExtension': Unsatisfied dependency expressed through constructor parameter 7; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.DefaultIssueLinkServiceBridgeProxy': Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.IssueLinkServiceBridgeImpl': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.atlassian.jira.config.properties.ApplicationProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport(value="")} Error creating bean with name 'portfolioActiveObjectsWorkItemPersistence': Unsatisfied dependency expressed through constructor parameter 4; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jiraWorkItemExtension': Unsatisfied dependency expressed through constructor parameter 7; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.DefaultIssueLinkServiceBridgeProxy': Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atlassian.rm.common.bridges.jira.issue.link.IssueLinkServiceBridgeImpl': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.atlassian.jira.config.properties.ApplicationProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport(value="")} ... It was loaded from /var/atlassian/application-data/jira/plugins/installed-plugins/jira-portfolio-9.12.6.jar
- Error 1
Workaround
To fix this issue, it is necessary to identify which jar file(s) is/are causing the dependency issue at Jira startup.
Please refer to the KB article Advanced Roadmaps for Jira is disabled and the Plans tab is missing for the detailed steps on how to achieve this.
Notes
- Even though the "bug" is not replicable in a fresh vanilla Jira application, Jira should still find a way to load all the Jar files successfully despite the class dependency issues
- This bug ticket was raised for Advanced Roadmap, but this type of "class dependency" issue can also affect the loading of other applications/plugins such as Jira Service Management
- When a customer is impacted by this issue, the issue is usually intermittent: sometimes Advanced Roadmap is successfully loaded, sometimes it is not. It depends on which order the jar files are loaded at Jira startup (and this order is random)
- links to