Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-40174

Unable to upgrade Confluence 5.9.1 to 5.9.2 due USER_RELATION constraint. Affects Oracle, H2 and HSQLDB.

    XMLWordPrintable

Details

    Description

      Steps to replicate:

      1. Set-up Confluence 5.9.1
      2. Upgrade to Confluence 5.9.2, the following error will show-up (Oracle example):
        2015-12-08 17:14:57,332 ERROR [localhost-startStop-1] [hibernate.tool.hbm2ddl.SchemaUpdate] execute Unsuccessful: alter table USER_RELATION add constraint u2u_relation_unique unique (SOURCEUSER, TARGETUSER, RELATIONNAME)
        2015-12-08 17:14:57,333 ERROR [localhost-startStop-1] [hibernate.tool.hbm2ddl.SchemaUpdate] execute ORA-02261: such unique or primary key already exists in the table
        
        2015-12-08 17:14:57,335 ERROR [localhost-startStop-1] [hibernate.tool.hbm2ddl.SchemaUpdate] execute could not complete schema update
        java.sql.SQLSyntaxErrorException: ORA-02261: such unique or primary key already exists in the table
        
        	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
        	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
        	at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
        	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
        	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
        	at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
        	at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
        	at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
        	at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:931)
        	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
        	at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1707)
        	at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1670)
        	at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:310)
        	at com.mchange.v2.c3p0.impl.NewProxyStatement.executeUpdate(NewProxyStatement.java:410)
        	at net.sf.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:167)
        	at bucket.core.persistence.hibernate.schema.SchemaHelper.updateSchemaIfNeeded(SchemaHelper.java:206)
        	at bucket.core.persistence.hibernate.schema.SchemaHelper.updateSchemaIfNeeded(SchemaHelper.java:181)
        	at com.atlassian.confluence.upgrade.AbstractUpgradeManager.upgrade(AbstractUpgradeManager.java:160)
        	at com.atlassian.confluence.plugin.PluginFrameworkContextListener.launchUpgrades(PluginFrameworkContextListener.java:136)
        	at com.atlassian.confluence.plugin.PluginFrameworkContextListener.contextInitialized(PluginFrameworkContextListener.java:86)
        	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
        	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
        	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
        	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
        	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586)
        	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1777)
        	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        	at java.lang.Thread.run(Thread.java:745)
        

      Embedded H2 database example:

       2015-12-09 15:01:54,821 ERROR [localhost-startStop-1] [hibernate.tool.hbm2ddl.SchemaUpdate] execute Unsuccessful: alter table USER_RELATION add constraint u2u_relation_unique unique (SOURCEUSER, TARGETUSER, RELATIONNAME)
      2015-12-09 15:01:54,822 ERROR [localhost-startStop-1] [hibernate.tool.hbm2ddl.SchemaUpdate] execute a UNIQUE constraint already exists on the set of columns in statement [alter table USER_RELATION add constraint u2u_relation_unique unique (SOURCEUSER, TARGETUSER, RELATIONNAME)]
      2015-12-09 15:01:54,822 ERROR [localhost-startStop-1] [hibernate.tool.hbm2ddl.SchemaUpdate] execute could not complete schema update
      java.sql.SQLSyntaxErrorException: a UNIQUE constraint already exists on the set of columns in statement [alter table USER_RELATION add constraint u2u_relation_unique unique (SOURCEUSER, TARGETUSER, RELATIONNAME)]
              at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
              at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
              at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
              at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
              at com.mchange.v2.c3p0.impl.NewProxyStatement.executeUpdate(NewProxyStatement.java:410)
              at net.sf.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:167)
              at bucket.core.persistence.hibernate.schema.SchemaHelper.updateSchemaIfNeeded(SchemaHelper.java:206)
              at bucket.core.persistence.hibernate.schema.SchemaHelper.updateSchemaIfNeeded(SchemaHelper.java:181)
              at com.atlassian.confluence.upgrade.AbstractUpgradeManager.upgrade(AbstractUpgradeManager.java:160)
              at com.atlassian.confluence.plugin.PluginFrameworkContextListener.launchUpgrades(PluginFrameworkContextListener.java:136)
              at com.atlassian.confluence.plugin.PluginFrameworkContextListener.contextInitialized(PluginFrameworkContextListener.java:86)
              at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4738)
              at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181)
              at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
              at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
              at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
              at java.util.concurrent.FutureTask.run(FutureTask.java:266)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
              at java.lang.Thread.run(Thread.java:745)
      2015-12-09 15:01:54,836 ERROR [localhost-startStop-1] [atlassian.confluence.plugin.PluginFrameworkContextListener] launchUpgrades Upgrade failed, application will not start: com.atlassian.config.ConfigurationException: Cannot update schema
      com.atlassian.confluence.upgrade.UpgradeException: com.atlassian.config.ConfigurationException: Cannot update schema
              at com.atlassian.confluence.upgrade.AbstractUpgradeManager.upgrade(AbstractUpgradeManager.java:180)
              at com.atlassian.confluence.plugin.PluginFrameworkContextListener.launchUpgrades(PluginFrameworkContextListener.java:136)
              at com.atlassian.confluence.plugin.PluginFrameworkContextListener.contextInitialized(PluginFrameworkContextListener.java:86)
              at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4738)
              at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181)
              at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
              at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
              at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
              at java.util.concurrent.FutureTask.run(FutureTask.java:266)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
              at java.lang.Thread.run(Thread.java:745)
      Caused by: com.atlassian.config.ConfigurationException: Cannot update schema
              at bucket.core.persistence.hibernate.schema.SchemaHelper.updateSchemaIfNeeded(SchemaHelper.java:210)
              at bucket.core.persistence.hibernate.schema.SchemaHelper.updateSchemaIfNeeded(SchemaHelper.java:181)
              at com.atlassian.confluence.upgrade.AbstractUpgradeManager.upgrade(AbstractUpgradeManager.java:160)
              ... 11 more
      Caused by: java.sql.SQLSyntaxErrorException: a UNIQUE constraint already exists on the set of columns in statement [alter table USER_RELATION add constraint u2u_relation_unique unique (SOURCEUSER, TARGETUSER, RELATIONNAME)]
              at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
              at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
              at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
              at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
              at com.mchange.v2.c3p0.impl.NewProxyStatement.executeUpdate(NewProxyStatement.java:410)
              at net.sf.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:167)
              at bucket.core.persistence.hibernate.schema.SchemaHelper.updateSchemaIfNeeded(SchemaHelper.java:206)
              ... 13 more
      

      Workaround

      1. Stop Confluence
      2. Drop the u2u_relation_unique constraint from the USER_RELATION table.
      3. Start Confluence and let the upgrade run again.

      Attachments

        Issue Links

          Activity

            People

              mfedoryshyn Maksym Fedoryshyh
              wzanchet William Zanchet (Inactive)
              Votes:
              5 Vote for this issue
              Watchers:
              17 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: