Possible upgrade problems + solutions
HSQL DB Upgrade
JIRA 3.7 has been upgraded to use HSQL DB version 1.8. HSQL DB is the in-memory database that ships with the Standalone distribution of JIRA.
If you have upgraded to JIRA 3.7 and have tried to copy across the HSQL DB script files from your 3.6.x or earlier instance you will see an error like the following:
2006-09-20 16:33:49,858 [core.entity.jdbc.DatabaseUtil] Unable to esablish a connection with the database... Error was:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (error in script file line: 104 Unexpected token: POSITION in statement [CREATE TABLE PORTLETCONFIGURATION(ID BIGINT NOT NULL PRIMARY KEY,PORTALPAGE BIGINT,PORTLET_ID VARCHAR,COLUMN_NUMBER INTEGER,POSITION])
2006-09-20 16:33:49,858 [core.entity.jdbc.DatabaseUtil] Could not get table name information from the database, aborting.
2006-09-20 16:33:51,493 WARN [jira.config.properties.ApplicationPropertiesImpl] Exception getting property 'jira.extension.container.provider' from database. Using default
2006-09-20 16:33:51,729 ERROR [ContainerBase.[Catalina].[localhost].[/]] Exception sending context initialized event to listener instance of class com.atlassian.jira.upgrade.ConsistencyLauncher
com.opensymphony.module.propertyset.PropertyImplementationException: Unable to esablish a connection with the database. (Cannot create PoolableConnectionFactory (error in script file line: 104 Unexpected token: POSITION in statement [CREATE TABLE PORTLETCONFIGURATION(ID BIGINT NOT NULL PRIMARY KEY,PORTALPAGE BIGINT,PORTLET_ID VARCHAR,COLUMN_NUMBER INTEGER,POSITION]))
at com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet.getKeys(OFBizPropertySet.java:100)
at com.opensymphony.module.propertyset.AbstractPropertySet.getKeys(AbstractPropertySet.java:292)
at com.opensymphony.module.propertyset.PropertySetCloner.cloneProperties(PropertySetCloner.java:114)
at com.opensymphony.module.propertyset.PropertySetManager.clone(PropertySetManager.java:61)
at com.atlassian.jira.propertyset.JiraCachingPropertySet.init(JiraCachingPropertySet.java:411)
at com.opensymphony.module.propertyset.PropertySetManager.getInstance(PropertySetManager.java:45)
at com.opensymphony.module.propertyset.PropertySetManager.getInstance(PropertySetManager.java:22)
at com.atlassian.jira.config.properties.PropertiesManager.loadPropertySet(PropertiesManager.java:79)
at com.atlassian.jira.config.properties.PropertiesManager.<init>(PropertiesManager.java:25)
at com.atlassian.jira.config.properties.PropertiesManager.getInstance(PropertiesManager.java:35)
at com.atlassian.jira.config.properties.ApplicationPropertiesImpl.getPropertiesManager(ApplicationPropertiesImpl.java:43)
at com.atlassian.jira.config.properties.ApplicationPropertiesImpl.getStringsWithPrefix(ApplicationPropertiesImpl.java:282)
at com.atlassian.jira.plugin.JiraPluginStateStore.loadPluginState(JiraPluginStateStore.java:41)
at com.atlassian.plugin.DefaultPluginManager.<init>(DefaultPluginManager.java:29)
at com.atlassian.jira.plugin.JiraPluginManager.<init>(JiraPluginManager.java:28)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at org.picocontainer.defaults.InstantiatingComponentAdapter.newInstance(InstantiatingComponentAdapter.java:100)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.instantiateComponent(ConstructorInjectionComponentAdapter.java:200)
at org.picocontainer.defaults.InstantiatingComponentAdapter.getComponentInstance(InstantiatingComponentAdapter.java:48)
at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:42)
at org.picocontainer.defaults.SynchronizedComponentAdapter.getComponentInstance(SynchronizedComponentAdapter.java:35)
at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:42)
at com.atlassian.jira.config.component.ProfilingComponentAdapter.getComponentInstance(ProfilingComponentAdapter.java:27)
at org.picocontainer.defaults.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:298)
at com.atlassian.jira.ComponentManager.quickStart(ComponentManager.java:267)
at com.atlassian.jira.ComponentManager.start(ComponentManager.java:254)
at com.atlassian.jira.upgrade.ConsistencyLauncher.contextInitialized(ConsistencyLauncher.java:25)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
If you see this error, JIRA will not be able to startup.
Solution
To resolve this problem you will need to 'safely' upgrade JIRA. The detailed instructions for doing this can be found in JIRA's online documentation.
A quick guide on doing this follows:
- Startup your old version of JIRA, pointing it at your current HSQL DB scripts files
- Perform an XML backup of JIRA
- Shutdown you old 3.6.x JIRA instance.
Startup your new 3.7 instance of JIRA using a new script location
<Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource" username="sa" password="" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:${catalina.home}/database/jiradb37" minEvictableIdleTimeMillis="4000" timeBetweenEvictionRunsMillis="5000" />
- Perform an XML import