Upgrade Fails with IllegalStateException, due to Mis-configured FISHEYE_HOME

Still need help?

The Atlassian Community is here for you.

Ask the community

Symptoms

  • You have a FISHEYE_INST Environment variables set up that points to your FISHEYE_HOME directory via a symbolic link or your FISHEYE_INST contains a lib directory.
  • You may also have the FISHEYE_HOME environment variable set up (this should not be set up, as this is just the term used to refer to Fisheye's installation location).
  • Crucible fails to start-up with error:
2008-11-06 20:14:18,441 ERROR [main] org.springframework.web.context.ContextLoader org.springframework.web.context.ContextLoader-initWebApplicationContext - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.IllegalStateException: Annotation-specified bean name 'hostComponentProvider' for bean class [com.atlassian.plugin.spring.SpringHostComponentProvider] conflicts with existing, non-compatible bean definition of same name and class [com.atlassian.plugin.spring.SpringHostComponentProvider]
   at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:420)
   at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
   at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
   at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
   at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
   at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
   at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)

Cause

If you do not setup a FISHEYE_INST environment variable FISHEYE_INST directory will default to your FISHEYE_HOME.

The purpose of the FISHEYE_INST directory is to keep a store data in a separate directory to your FISHEYE_HOME (directory that stores your configuration files as well as any unique libraries/customisations that you wish to keep across upgrades).

In most cases, the only things in the FISHEYE_INST directory is the config.xml file and the var directory, however in some cases customers may install plugins and wish to keep the libraries required for the installation in their FISHEYE_INST/lib directory, or may want to customise their content, so they will place their customised content in the FISHEYE_INST/content.

Fisheye will look in the FISHEYE_INST directory for the config.xml file and var directory and (if and only if they exist) for the lib and content directory , as for each of these you can have unique configuration/libraries that you wish to keep across versions (for upgrades).

If you setup a symbolic link for FISHEYE_INST that points to the FISHEYE_HOME, then essentially you will loading your libraries directories twice (because the FISHEYE_INST is set using the symbolic link, Fisheye will not realise that this is in fact the same directory as the FISHEYE_HOME). In the past this has not been a problem, but in 1.6.3 we have added a library that will throw an error if you have duplicate jars.

Diagnostics/Test

Remove all reference to the FISHEYE_INST and FISHEYE_HOME (if you have it set up) Environment variables and check if you can reproduce the problem.

Resolution

If you have a FISHEYE_HOME variable set up (either in your custom script to start crucible or as an environment variable), please ensure that it points to the fully qualified location of your fisheye install (and is not a symbolic/soft link).

If you FISHEYE_INST is a symbolic link to the FISHEYE_HOME directory (that is, the install directory that you download from www.atlassian.com and unzipped), then please remove the FISHEYE_INST Environment variables.

If no FISHEYE_INST has been setup, Fisheye will automatically default to the FISHEYE_HOME directory. Thus there is no need to define the FISHEYE_INST. If you do want to create a separate directory for the FISHEYE_INST, please follow the instructions in the Upgrade guide to upgrade to a new version and create a new FISHEYE_INST directory.

 

Last modified on Feb 9, 2016

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.