Fisheye/Crucible Analytics Client Plugin can't be enabled
Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. 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
The Fisheye/Crucible Analytics Client Plugin can't be enabled.
While this is not a serious issue as the client plugin collects analytics data and is not important to the application, there is a bug with a dependency on the analytics client plugin that does affect normal operations:
- FE-7405Getting issue details... STATUS
Environment
Fisheye/Crucible 4.8.10
Diagnosis
The plugin can't be enabled and the following is logged in atlassian-fisheye-<date>.log
2024-03-20 04:28:14,025 ERROR [ThreadPoolAsyncTaskExecutor::Thread 19 ] com.atlassian.plugin.osgi.factory.OsgiPlugin OsgiPlugin-onPluginContainerFailed - Unable to start the plugin container for plugin 'com.atlassian.analytics.analytics-client'
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productEventListener' defined in URL [bundle://2.0:0/META-INF/spring/atlassian-plugins-components.xml]: Unsatisfied dependency expressed through constructor argument with index 4 of type [com.atlassian.analytics.client.logger.AnalyticsLogger]: Error creating bean with name 'analyticsLogger' defined in URL [bundle://2.0:0/META-INF/spring/atlassian-plugins-components.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.analytics.client.logger.Log4jAnalyticsLogger]: Constructor threw exception; nested exception is java.lang.NullPointerException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'analyticsLogger' defined in URL [bundle://2.0:0/META-INF/spring/atlassian-plugins-components.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.analytics.client.logger.Log4jAnalyticsLogger]: Constructor threw exception; nested exception is java.lang.NullPointerException
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'analyticsLogger' defined in URL [bundle://2.0:0/META-INF/spring/atlassian-plugins-components.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.analytics.client.logger.Log4jAnalyticsLogger]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:275) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
... 19 more
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.analytics.client.logger.Log4jAnalyticsLogger]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:267) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
... 32 more
Caused by: java.lang.NullPointerException
at uk.org.simonsite.log4j.helpers.FileHelper.isReadable(FileHelper.java:115) [?:?]
at uk.org.simonsite.log4j.appender.TimeBasedRoller.initNextRolloverTime(TimeBasedRoller.java:148) [?:?]
at uk.org.simonsite.log4j.appender.TimeBasedRoller.<init>(TimeBasedRoller.java:75) [?:?]
at uk.org.simonsite.log4j.appender.CompositeRoller.<init>(CompositeRoller.java:37) [?:?]
at uk.org.simonsite.log4j.appender.TimeAndSizeRollingAppender.activateOptions(TimeAndSizeRollingAppender.java:441) [?:?]
at com.atlassian.analytics.client.logger.Log4jAnalyticsLogger.initAnalyticsAppender(Log4jAnalyticsLogger.java:94) [?:?]
at com.atlassian.analytics.client.logger.Log4jAnalyticsLogger.<init>(Log4jAnalyticsLogger.java:60) [?:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [?:1.8.0_402-402]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [?:1.8.0_402-402]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:1.8.0_402-402]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [?:1.8.0_402-402]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
... 34 more
Cause
The analytics plugin needs to be able to read/write to the location $FISHEYE_INST/analytics_logs. If there are mixed permissions at the directory or the file content level (files owned by a user other than the one running fisheye) the plugin cannot be enabled.
Solution
Change ownership of the folder and all the files contained in it to the user running Fisheye.
chown -R <fisheye-user> $FISHEYE_INST/analytics-logs
Enable the Analytics Client Plugin