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

Some upgrade tasks ignore "hibernate.default_schema" or "schema-name"

      SQL Server user and Oracle users tend to use schema-name attribute in datasource definition or the following attribute in confluence.cfg.xml:

      <property name="hibernate.default_schema">dbo</property>
      

      This works flawlessly in Confluence. However, there seems to be some hardcoded SQL queries in some of the upgrade tasks which causes the schema attribute to be completely ignored, hence failing the upgrade.

      One of them that I found is EmbeddedCrowdSchemaUpgradeTask.java which failed an upgrade of Confluence 3.1 to 3.5.13 with the following stacktrace in the log:

      2011-12-09 17:31:44,028 ERROR [main] [atlassian.confluence.upgrade.UpgradeLauncherServletContextListener] contextInitialized Upgrade failed, application will not start: Upgrade task com.atlassian.confluence.upgrade.upgradetask.EmbeddedCrowdSchemaUpgradeTask@63af5853 failed during the SCHEMA_UPGRADE phase due to: StatementCallback; bad SQL grammar [SELECT mem1.id, mem1.parent_id, mem1.child_group_id, mem1.child_user_id FROM cwd_membership mem1, cwd_membership mem2 WHERE mem1.id <> mem2.id AND mem1.parent_id = mem2.parent_id AND mem1.child_user_id = mem2.child_user_id ORDER BY mem1.parent_id ASC, mem1.child_user_id ASC, mem1.id ASC]; nested exception is java.sql.SQLException: Invalid object name 'cwd_membership'.
      com.atlassian.confluence.upgrade.UpgradeException: Upgrade task com.atlassian.confluence.upgrade.upgradetask.EmbeddedCrowdSchemaUpgradeTask@63af5853 failed during the SCHEMA_UPGRADE phase due to: StatementCallback; bad SQL grammar [SELECT mem1.id, mem1.parent_id, mem1.child_group_id, mem1.child_user_id FROM cwd_membership mem1, cwd_membership mem2 WHERE mem1.id <> mem2.id AND mem1.parent_id = mem2.parent_id AND mem1.child_user_id = mem2.child_user_id ORDER BY mem1.parent_id ASC, mem1.child_user_id ASC, mem1.id ASC]; nested exception is java.sql.SQLException: Invalid object name 'cwd_membership'.
      	at com.atlassian.confluence.upgrade.AbstractUpgradeManager.executeUpgradeStep(AbstractUpgradeManager.java:216)
      	at com.atlassian.confluence.upgrade.AbstractUpgradeManager.runSchemaUpgradeTasks(AbstractUpgradeManager.java:135)
      	at com.atlassian.confluence.upgrade.AbstractUpgradeManager.upgrade(AbstractUpgradeManager.java:92)
      	at com.atlassian.confluence.upgrade.impl.DefaultUpgradeManager.upgrade(DefaultUpgradeManager.java:140)
      	at com.atlassian.confluence.upgrade.UpgradeLauncherServletContextListener.contextInitialized(UpgradeLauncherServletContextListener.java:28)
      	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
      	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
      	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
      	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
      	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
      	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
      	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
      	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
      	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
      	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:597)
      	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
      	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
      Caused by: org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [SELECT mem1.id, mem1.parent_id, mem1.child_group_id, mem1.child_user_id FROM cwd_membership mem1, cwd_membership mem2 WHERE mem1.id <> mem2.id AND mem1.parent_id = mem2.parent_id AND mem1.child_user_id = mem2.child_user_id ORDER BY mem1.parent_id ASC, mem1.child_user_id ASC, mem1.id ASC]; nested exception is java.sql.SQLException: Invalid object name 'cwd_membership'.
      	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:230)
      	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:354)
      	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:405)
      	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:409)
      	at com.atlassian.confluence.upgrade.upgradetask.EmbeddedCrowdSchemaUpgradeTask.removeDuplicateUserMemberships(EmbeddedCrowdSchemaUpgradeTask.java:106)
      	at com.atlassian.confluence.upgrade.upgradetask.EmbeddedCrowdSchemaUpgradeTask.doBeforeUpgrade(EmbeddedCrowdSchemaUpgradeTask.java:66)
      	at com.atlassian.confluence.upgrade.upgradetask.AbstractConstraintCreationUpgradeTask.doUpgrade(AbstractConstraintCreationUpgradeTask.java:119)
      	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:597)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
      	at EmbeddedCrowdSchemaUpgradeTask.javaorg.springframework.aop.framework.Rorg.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      	at $Proxy34.doUpgrade(Unknown Source)
      	at com.atlassian.confluence.upgrade.AbstractUpgradeManager$UpgradeStep$3.execute(AbstractUpgradeManager.java:428)
      	at com.atlassian.confluence.upgrade.AbstractUpgradeManager.executeUpgradeStep(AbstractUpgradeManager.java:190)
      	... 19 more
      Caused by: java.sql.SQLException: Invalid object name 'cwd_membership'.
      	at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
      	at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)
      	at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)
      	at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)
      	at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
      	at net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1301)
      	at com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:35)
      	at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:390)
      	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:343)
      	... 37 more
      2011-12-09 17:31:44,035 ERROR [main] [atlassian.confluence.upgrade.UpgradeLauncherServletContextListener] contextInitialized 1 errors were encountered during upgrade:
      2011-12-09 17:31:44,035 ERROR [main] [atlassian.confluence.upgrade.UpgradeLauncherServletContextListener] contextInitialized 1: StatementCallback; bad SQL grammar [SELECT mem1.id, mem1.parent_id, mem1.child_group_id, mem1.child_user_id FROM cwd_membership mem1, cwd_membership mem2 WHERE mem1.id <> mem2.id AND mem1.parent_id = mem2.parent_id AND mem1.child_user_id = mem2.child_user_id ORDER BY mem1.parent_id ASC, mem1.child_user_id ASC, mem1.id ASC]; nested exception is java.sql.SQLException: Invalid object name 'cwd_membership'.
      

            [CONFSERVER-24113] Some upgrade tasks ignore "hibernate.default_schema" or "schema-name"

            Minh Tran added a comment -
            Atlassian update

            Thank you for taking the time to raise, comment or vote on this Bug. We regret to inform you that due to a limited number of reports and based on our current backlog of higher impact issues that we are closing this issue as Timed Out.
            If this issue is still impacting you on a recent version please feel free to comment with the affected version. Any further details you may be able to provide regarding reproduction or impact of this issue may help us better address this issue.
            Thanks again.
            Regards,
            Confluence Development

            Minh Tran added a comment - Atlassian update Thank you for taking the time to raise, comment or vote on this Bug. We regret to inform you that due to a limited number of reports and based on our current backlog of higher impact issues that we are closing this issue as Timed Out. If this issue is still impacting you on a recent version please feel free to comment with the affected version. Any further details you may be able to provide regarding reproduction or impact of this issue may help us better address this issue. Thanks again. Regards, Confluence Development

              Unassigned Unassigned
              halatas HuseinA
              Affected customers:
              0 This affects my team
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: