Database connection closes during long running space imports

XMLWordPrintable

    • 12
    • Severity 2 - Major
    • 2

      Issue Summary

      Confluence import commits data at a space level granularity. For large spaces (>10 GB), the database connection closes before the transaction is committed causing the entire space import to fail. 

       

      Stacktrace:

      com.atlassian.confluence.importexport.v2.ImportExportException: com.atlassian.confluence.importexport.v2.ImportExportException: org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is net.sf.hibernate.TransactionException: Unable to commit against JDBC Connection
      com.atlassian.confluence.importexport.v2.space.ImportSpaceProcessor.processImport(ImportSpaceProcessor.java:156)
      com.atlassian.confluence.importexport.v2.space.ImportSpaceProcessor.processImport(ImportSpaceProcessor.java:67)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.processImport(ImportTaskRunner.java:141)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.lambda$runTaskInternal$0(ImportTaskRunner.java:103)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.withHeartbeat(ImportTaskRunner.java:92)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.lambda$runTaskInternal$1(ImportTaskRunner.java:104)
      com.atlassian.confluence.core.flags.ImportRunningThreadLocalFlag.executeCallable(ImportRunningThreadLocalFlag.java:32)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.withLocalFlag(ImportTaskRunner.java:98)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.lambda$runTaskInternal$2(ImportTaskRunner.java:105)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.withMetrics(ImportTaskRunner.java:69)
      com.atlassian.confluence.importexport.v2.ImportTaskRunner.runTaskInternal(ImportTaskRunner.java:106)
      com.atlassian.confluence.importexport.v2.space.ImportSpaceTaskRunner.runTask(ImportSpaceTaskRunner.java:49)
      com.atlassian.progress.amq.TaskProcessor.accept(TaskProcessor.java:63)
      com.atlassian.progress.amq.TaskProcessor.accept(TaskProcessor.java:23)
      com.atlassian.progress.amq.ConcurrencyControlTaskProcessor.accept(ConcurrencyControlTaskProcessor.java:68)
      com.atlassian.progress.amq.ConcurrencyControlTaskProcessor.accept(ConcurrencyControlTaskProcessor.java:19)
      com.atlassian.progress.amq.ProgressAwareMessageRunner.processMessage(ProgressAwareMessageRunner.java:55)
      com.atlassian.confluence.impl.messagequeue.VCacheMessageRunner.lambda$processMessage$0(VCacheMessageRunner.java:21)
      com.atlassian.confluence.vcache.VCacheRequestContextOperations.lambda$doInRequestContext$0(VCacheRequestContextOperations.java:49)
      com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:84)
      com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:74)
      com.atlassian.confluence.vcache.VCacheRequestContextOperations.doInRequestContext(VCacheRequestContextOperations.java:48)
      com.atlassian.confluence.impl.messagequeue.VCacheMessageRunner.processMessage(VCacheMessageRunner.java:20)
      com.atlassian.confluence.util.zipkin.impl.ZipkinMessageRunner.processMessage(ZipkinMessageRunner.java:31)
      com.atlassian.confluence.impl.messagequeue.AtlassianMessageQueueAppConfigWithScheduler.lambda$wrapMessageRunnerWithMetricsContext$1(AtlassianMessageQueueAppConfigWithScheduler.java:117)
      com.atlassian.messagequeue.internal.core.NestedMessageConsumer.consume(NestedMessageConsumer.java:113)
      com.atlassian.messagequeue.internal.sqs.SQSMessageConsumer.consumeMessage(SQSMessageConsumer.java:248)
      com.atlassian.messagequeue.internal.sqs.SQSMessageConsumer.processReceiveMessageResult(SQSMessageConsumer.java:198)
      com.atlassian.messagequeue.internal.sqs.SQSMessageConsumer.run(SQSMessageConsumer.java:123)
      java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      java.base/java.lang.Thread.run(Thread.java:829)
      
      Caused by: com.atlassian.confluence.importexport.v2.ImportExportException: org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is net.sf.hibernate.TransactionException: Unable to commit against JDBC Connection
      com.atlassian.confluence.importexport.v2.ImportProcessor.runImportTransaction(ImportProcessor.java:212)
      com.atlassian.confluence.importexport.v2.space.ImportSpaceProcessor.lambda$processImport$1(ImportSpaceProcessor.java:132)
      com.atlassian.confluence.user.ConfluenceUserContextImpersonator$1.call(ConfluenceUserContextImpersonator.java:68)
      com.atlassian.confluence.user.ConfluenceUserContextImpersonator$2.call(ConfluenceUserContextImpersonator.java:86)
      com.atlassian.confluence.user.ConfluenceUserContextImpersonator.asUser(ConfluenceUserContextImpersonator.java:44)
      com.atlassian.confluence.importexport.v2.space.ImportSpaceProcessor.processImport(ImportSpaceProcessor.java:131)
      ... 31 more
      
      Caused by: org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is net.sf.hibernate.TransactionException: Unable to commit against JDBC Connection
      org.springframework.orm.hibernate.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:514)
      com.atlassian.confluence.impl.hibernate.ConfluenceHibernateTransactionManager.doCommit(ConfluenceHibernateTransactionManager.java:58)
      org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743)
      org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711)
      jdk.internal.reflect.GeneratedMethodAccessor97.invoke(Unknown Source)
      java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      java.base/java.lang.reflect.Method.invoke(Method.java:566)
      org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
      org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205)
      com.sun.proxy.$Proxy74.commit(Unknown Source)
      org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:152)
      com.atlassian.confluence.importexport.v2.ImportProcessor.runImportTransaction(ImportProcessor.java:166)
      ... 36 more
      
      Caused by: net.sf.hibernate.TransactionException: Unable to commit against JDBC Connection
      org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:87)
      org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:272)
      org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104)
      com.atlassian.hibernate.adapter.adapters.TransactionV2Adapter.commit(TransactionV2Adapter.java:30)
      org.springframework.orm.hibernate.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:510)
      ... 47 more
      
      Caused by: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.
      org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:350)
      org.postgresql.jdbc.PgConnection.executeTransactionCommand(PgConnection.java:849)
      org.postgresql.jdbc.PgConnection.commit(PgConnection.java:871)
      com.atlassian.confluence.impl.startup.IllegalDBAccessLoggingDriver$LoggingConnection.commit(IllegalDBAccessLoggingDriver.java:136)
      jdk.internal.reflect.GeneratedMethodAccessor417.invoke(Unknown Source)
      java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      java.base/java.lang.reflect.Method.invoke(Method.java:566)
      org.vibur.dbcp.proxy.AbstractInvocationHandler.targetInvoke(AbstractInvocationHandler.java:153)
      org.vibur.dbcp.proxy.AbstractInvocationHandler.restrictedInvoke(AbstractInvocationHandler.java:148)
      org.vibur.dbcp.proxy.ConnectionInvocationHandler.restrictedInvoke(ConnectionInvocationHandler.java:103)
      org.vibur.dbcp.proxy.ConnectionInvocationHandler.restrictedInvoke(ConnectionInvocationHandler.java:37)
      org.vibur.dbcp.proxy.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:83)
      com.sun.proxy.$Proxy3044.commit(Unknown Source)
      jdk.internal.reflect.GeneratedMethodAccessor417.invoke(Unknown Source)
      java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      java.base/java.lang.reflect.Method.invoke(Method.java:566)
      com.atlassian.workcontext.api.WorkContextBound$SeverableInvocationHandler.invoke(WorkContextBound.java:62)
      com.sun.proxy.$Proxy3050.commit(Unknown Source)
      jdk.internal.reflect.GeneratedMethodAccessor417.invoke(Unknown Source)
      java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      java.base/java.lang.reflect.Method.invoke(Method.java:566)
      com.atlassian.connpool.impl.ConnectionProxy.invoke(ConnectionProxy.java:66)
      com.sun.proxy.$Proxy3044.commit(Unknown Source)
      org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:81)
      ... 51 more
      
      Caused by: java.net.SocketTimeoutException: Read timed out
      java.base/java.net.SocketInputStream.socketRead0(Native Method)
      java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
      java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
      java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
      org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:161)
      org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:128)
      org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:113)
      org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
      org.postgresql.core.PGStream.receiveChar(PGStream.java:443)
      org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2057)
      org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:323)
      ... 74 more
      

      Steps to Reproduce

      Import a space for which the XML is larger than 10GB.

      Expected Results

      The space is imported successfully

      Actual Results

      The space import fails due to the database connection closing prematurely

      Workaround

      None

              Assignee:
              Oleksii Martyniuk (Inactive)
              Reporter:
              Tushar Mahule
              Votes:
              2 Vote for this issue
              Watchers:
              11 Start watching this issue

                Created:
                Updated:
                Resolved: