Issue Summary
"Bitbucket Server - Jira integration - Commit Checker" plugin cannot be re-enabled after it has been disabled.
This is reproducible on Data Center: yes
Steps to Reproduce
- Go to Administration > Manage apps
- Show system plugins by selecting "System" from the dropdown at the top of the page
- Look for the "Bitbucket Server - Jira integration - Commit Checker" plugin and disable it
- Try to re-enable the plugin
Expected Results
Plugin will be re-enabled successfully.
Other system plugins can be disabled and re-enabled without issues.
Actual Results
Plugin cannot be re-enabled.
The UI shows:
This app failed to enable. Refer to the logs for more information.
The exception below is thrown in the atlassian-bitbucket.log file:
2022-09-15 08:25:30,708 ERROR [ThreadPoolAsyncTaskExecutor::Thread 26] c.a.plugin.osgi.factory.OsgiPlugin Unable to start the plugin container for plugin 'com.atlassian.bitbucket.server.bitbucket-jira-commit-checker' org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'circuitBreakerHelper' defined in URL [bundle://58.0:1/com/atlassian/bitbucket/internal/plugin/hooks/jira/CircuitBreakerHelper.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.bitbucket.internal.plugin.hooks.jira.CircuitBreakerHelper]: Constructor threw exception; nested exception is com.atlassian.stash.internal.resilience.ConfigurationAlreadyExistsException: Configuration with name jira-commit-checker already exists at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:315) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) 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.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.lang.Thread.run(Thread.java:750) ... 11 frames trimmed Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.bitbucket.internal.plugin.hooks.jira.CircuitBreakerHelper]: Constructor threw exception; nested exception is com.atlassian.stash.internal.resilience.ConfigurationAlreadyExistsException: Configuration with name jira-commit-checker already exists at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) ... 9 common frames omitted Caused by: com.atlassian.stash.internal.resilience.ConfigurationAlreadyExistsException: Configuration with name jira-commit-checker already exists at com.atlassian.stash.internal.resilience.R4JApiWrapper.createConfiguration(R4JApiWrapper.java:74) at com.atlassian.stash.internal.resilience.DefaultCircuitBreakerService.addConfiguration(DefaultCircuitBreakerService.java:41) at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) at com.atlassian.bitbucket.internal.plugin.hooks.jira.CircuitBreakerHelper.<init>(CircuitBreakerHelper.java:42) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ... 9 common frames omitted
Workaround
- Restart Bitbucket
- Re-enable the plugin from the Administration > Manage apps page
"Bitbucket Server - Jira integration - Commit Checker" plugin cannot be re-enabled
Issue Summary
"Bitbucket Server - Jira integration - Commit Checker" plugin cannot be re-enabled after it has been disabled.
This is reproducible on Data Center: yes
Steps to Reproduce
- Go to Administration > Manage apps
- Show system plugins by selecting "System" from the dropdown at the top of the page
- Look for the "Bitbucket Server - Jira integration - Commit Checker" plugin and disable it
- Try to re-enable the plugin
Expected Results
Plugin will be re-enabled successfully.
Other system plugins can be disabled and re-enabled without issues.
Actual Results
Plugin cannot be re-enabled.
The UI shows:
This app failed to enable. Refer to the logs for more information.
The exception below is thrown in the atlassian-bitbucket.log file:
2022-09-15 08:25:30,708 ERROR [ThreadPoolAsyncTaskExecutor::Thread 26] c.a.plugin.osgi.factory.OsgiPlugin Unable to start the plugin container for plugin 'com.atlassian.bitbucket.server.bitbucket-jira-commit-checker' org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'circuitBreakerHelper' defined in URL [bundle://58.0:1/com/atlassian/bitbucket/internal/plugin/hooks/jira/CircuitBreakerHelper.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.bitbucket.internal.plugin.hooks.jira.CircuitBreakerHelper]: Constructor threw exception; nested exception is com.atlassian.stash.internal.resilience.ConfigurationAlreadyExistsException: Configuration with name jira-commit-checker already exists at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:315) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) 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.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.lang.Thread.run(Thread.java:750) ... 11 frames trimmed Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.bitbucket.internal.plugin.hooks.jira.CircuitBreakerHelper]: Constructor threw exception; nested exception is com.atlassian.stash.internal.resilience.ConfigurationAlreadyExistsException: Configuration with name jira-commit-checker already exists at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) ... 9 common frames omitted Caused by: com.atlassian.stash.internal.resilience.ConfigurationAlreadyExistsException: Configuration with name jira-commit-checker already exists at com.atlassian.stash.internal.resilience.R4JApiWrapper.createConfiguration(R4JApiWrapper.java:74) at com.atlassian.stash.internal.resilience.DefaultCircuitBreakerService.addConfiguration(DefaultCircuitBreakerService.java:41) at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) at com.atlassian.bitbucket.internal.plugin.hooks.jira.CircuitBreakerHelper.<init>(CircuitBreakerHelper.java:42) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ... 9 common frames omitted
Workaround
- Restart Bitbucket
- Re-enable the plugin from the Administration > Manage apps page