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

Importing Cloud Backup to Server fails on Oracle 12c with AO sequences already used

    XMLWordPrintable

Details

    Description

      Summary

      When importing an XML Backup from Cloud to Server on Oracle 12c, the process fails.

      Environment

      Oracle 12c with ojdbc6 and ojdbc7 driver
      Oracle 12c 12.1.0.2.0 with ojdbc8 driver

      Steps to Reproduce

      1. Export an XML Backup from Cloud
      2. Modify the pdata file in the XML Backup (details here CONF-28272)
      3. Make sure to create the all_objects view as recommended in our Database Setup guide for Oracle
      4. Install a fresh instance of Confluence 5.10.x or 6.0.x using Oracle JDBC Driver (either ojdbc6 or ojdbc7)
      5. Go through the initial setup
      6. Import Content from a Backup

      Expected Results

      The import should run without any problems

      Actual Results

      The import runs fine until it reaches the part of importing the AO tables data and throws the following error in the logs. The UI rolls back to 90% until it exits with an error. (Eventhough we applied the fix on the pdata)

      2016-11-23 12:40:12,304 ERROR [active-objects-init-system tenant-0] [net.java.ao.sql] handleUpdateError Exception executing SQL update <CREATE SEQUENCE "AO_21D670_WHITELIST1050971807" INCREMENT BY 1 START WITH 1 NOMAXVALUE MINVALUE 1>
       -- url: /setup/setuppaths.action | referer: http://10.10.10.10:8090/setup/setupstandarddb.action | traceId: 00e8ae08a702cbab | userName: anonymous | action: setuppaths
      java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object
       
              at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
              at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
              at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
              at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
              at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
              at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
              at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:195)
              at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1036)
              at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1336)
              at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1845)
              at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1810)
              at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:294)
              at com.mchange.v2.c3p0.impl.NewProxyStatement.executeUpdate(NewProxyStatement.java:410)
              at net.java.ao.DatabaseProvider.executeUpdate(DatabaseProvider.java:2238)
              at net.java.ao.DatabaseProvider.executeUpdateForAction(DatabaseProvider.java:2294)
              at net.java.ao.DatabaseProvider.executeUpdatesForActions(DatabaseProvider.java:2266)
              at net.java.ao.schema.SchemaGenerator.migrate(SchemaGenerator.java:91)
              at net.java.ao.EntityManager.migrate(EntityManager.java:128)
              at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.migrate(EntityManagedActiveObjects.java:51)
              at com.atlassian.activeobjects.internal.AbstractActiveObjectsFactory$1.doInTransaction(AbstractActiveObjectsFactory.java:77)
              at com.atlassian.activeobjects.internal.AbstractActiveObjectsFactory$1.doInTransaction(AbstractActiveObjectsFactory.java:72)
              at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:21)
              at com.atlassian.sal.spring.component.SpringHostContextAccessor$1.doInTransaction(SpringHostContextAccessor.java:71)
              at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
              at com.atlassian.sal.spring.component.SpringHostContextAccessor.doInTransaction(SpringHostContextAccessor.java:68)
              at com.atlassian.confluence.spring.transaction.interceptor.ConfluenceSpringHostContextAccessor.access$001(ConfluenceSpringHostContextAccessor.java:21)
              at com.atlassian.confluence.spring.transaction.interceptor.ConfluenceSpringHostContextAccessor.lambda$doInTransaction$3(ConfluenceSpringHostContextAccessor.java:72)
              at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:87)
              at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:71)
              at com.atlassian.confluence.spring.transaction.interceptor.ConfluenceSpringHostContextAccessor.doInTransaction(ConfluenceSpringHostContextAccessor.java:72)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
              at com.sun.proxy.$Proxy391.doInTransaction(Unknown Source)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:136)
              at com.sun.proxy.$Proxy391.doInTransaction(Unknown Source)
              at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:18)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
              at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
              at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
              at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
              at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
              at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
              at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
              at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
              at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
              at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
              at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
              at com.sun.proxy.$Proxy828.execute(Unknown Source)
              at com.atlassian.activeobjects.internal.AbstractActiveObjectsFactory.create(AbstractActiveObjectsFactory.java:72)
              at com.atlassian.activeobjects.internal.DelegatingActiveObjectsFactory.create(DelegatingActiveObjectsFactory.java:32)
              at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects$1$1$1.call(TenantAwareActiveObjects.java:91)
              at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects$1$1$1.call(TenantAwareActiveObjects.java:86)
              at com.atlassian.sal.core.executor.ThreadLocalDelegateCallable.call(ThreadLocalDelegateCallable.java:38)
              at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:87)
              at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:71)
              at com.atlassian.confluence.vcache.VCacheRequestContextOperations.lambda$withRequestContext$1(VCacheRequestContextOperations.java:59)
              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)
      

      Workaround

      The current workaround is not perfect but it does the job:

      1. Bring up Confluence from scratch, and make sure it's up and running as a blank instance
      2. Go to the "Backup & Restore" page ready to import your backup file
      3. Directly in the database, drop all AO sequences (but do not drop any that are not prefixed by AO_)
      4. Start the import

      Sometimes the first time, it doesn't work but if you run it again right after it, it works!

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              rslaiby Rudy Slaiby
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - 28h
                  28h
                  Remaining:
                  Remaining Estimate - 28h
                  28h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified