Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-18721

Bamboo constantly creates plan branches when using Oracle and SVN

XMLWordPrintable

      Summary

      When upgrading Bamboo from 5.13.1 to 6.1.0, it constantly detects and creates new plan branches.

      Environment

      • Bamboo 5.13.1, upgraded to 6.1.0
      • Oracle 12.2.0
      • SVN repository

      Steps to Reproduce

      1. Have a repository configured with SVN
      2. Configure Bamboo 5.13.1 and Oracle 12.2.0.
      3. Perform an upgrade to Bamboo 6.1.0

      Expected Results

      No branches created.

      Actual Results

      The following error happens when Bamboo starts:

      2017-09-28 23:50:24,293 DEBUG [12-BranchDetectionBackgroundThread:pool-20-thread-1] [BranchDetectionServiceImpl] Detecting already existing branches for plan BAM-SUB
      2017-09-28 23:50:24,332 WARN [12-BranchDetectionBackgroundThread:pool-20-thread-1] [SvnBranchDetector] svn branch detected: http://localhost:8080/subversion/server2/branches/test2, but doesn't start with root http://localhost:8080/subversion/server2/trunk
      2017-09-28 23:50:24,332 WARN [12-BranchDetectionBackgroundThread:pool-20-thread-1] [SvnBranchDetector] svn branch detected: http://localhost:8080/subversion/server2/branches/test3, but doesn't start with root http://localhost:8080/subversion/server2/trunk
      2017-09-28 23:50:24,713 INFO [12-BranchDetectionBackgroundThread:pool-20-thread-1] [AbstractBatchImpl] HHH000010: On release of batch it still contained JDBC statements
      2017-09-28 23:50:24,713 ERROR [12-BranchDetectionBackgroundThread:pool-20-thread-1] [BatchingBatch] HHH000315: Exception executing batch [java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("BAMBOO"."VCS_BRANCH"."NAME")
      ], SQL: insert into VCS_BRANCH (NAME, DETECTED_DELETION_DATE, CHAIN_ID, VCS_BRANCH_ID) values (?, ?, ?, ?)
      2017-09-28 23:50:24,715 WARN [12-BranchDetectionBackgroundThread:pool-20-thread-1] [SqlExceptionHelper] SQL Error: 1400, SQLState: 23000
      2017-09-28 23:50:24,715 ERROR [12-BranchDetectionBackgroundThread:pool-20-thread-1] [SqlExceptionHelper] ORA-01400: cannot insert NULL into ("BAMBOO"."VCS_BRANCH"."NAME")
      
      2017-09-28 23:50:24,715 WARN [12-BranchDetectionBackgroundThread:pool-20-thread-1] [SqlExceptionHelper] SQL Error: 1400, SQLState: 23000
      2017-09-28 23:50:24,715 ERROR [12-BranchDetectionBackgroundThread:pool-20-thread-1] [SqlExceptionHelper] ORA-01400: cannot insert NULL into ("BAMBOO"."VCS_BRANCH"."NAME")
      
      2017-09-28 23:50:24,721 ERROR [12-BranchDetectionBackgroundThread:pool-20-thread-1] [ExceptionMapperStandardImpl] HHH000346: Error during managed flush [org.hibernate.exception.ConstraintViolationException: could not execute batch]
      2017-09-28 23:50:24,747 ERROR [12-BranchDetectionBackgroundThread:pool-20-thread-1] [BambooPluginUtils] An unexpected error has occurred while detecting branches: BAM-SUB
      org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into VCS_BRANCH (NAME, DETECTED_DELETION_DATE, CHAIN_ID, VCS_BRANCH_ID) values (?, ?, ?, ?)]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
      	at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:241)
      	at org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:755)
      	at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:594)
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
      	at sun.reflect.GeneratedMethodAccessor171.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:497)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
      	at com.sun.proxy.$Proxy79.commit(Unknown Source)
      	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:504)
      	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
      	at com.sun.proxy.$Proxy156.saveAll(Unknown Source)
      	at com.atlassian.bamboo.plan.branch.VcsBranchManagerImpl.createAll(VcsBranchManagerImpl.java:86)
      	at com.atlassian.bamboo.plan.branch.BranchDetectionServiceImpl.findBranchesCreatedBeforePlanCreation(BranchDetectionServiceImpl.java:377)
      	at com.atlassian.bamboo.plan.branch.BranchDetectionServiceImpl.access$500(BranchDetectionServiceImpl.java:79)
      	at com.atlassian.bamboo.plan.branch.BranchDetectionServiceImpl$BranchDetector$1.lambda$run$0(BranchDetectionServiceImpl.java:128)
      	at org.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:359)
      	at org.springframework.orm.hibernate5.HibernateTemplate.execute(HibernateTemplate.java:313)
      	at com.atlassian.bamboo.plan.branch.BranchDetectionServiceImpl$BranchDetector$1.run(BranchDetectionServiceImpl.java:121)
      	at com.atlassian.bamboo.plugin.BambooPluginUtils$Runnable.call(BambooPluginUtils.java:106)
      	at com.atlassian.bamboo.plugin.BambooPluginUtils$Runnable.call(BambooPluginUtils.java:99)
      	at com.atlassian.bamboo.plugin.BambooPluginUtils.callUnsafeCode(BambooPluginUtils.java:53)
      	at com.atlassian.bamboo.plan.branch.BranchDetectionServiceImpl$BranchDetector.run(BranchDetectionServiceImpl.java:167)
      ...
      Caused by: org.hibernate.exception.ConstraintViolationException: could not execute batch
      	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:112)
      	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
      	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
      	at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.performExecution(BatchingBatch.java:121)
      	at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.doExecuteBatch(BatchingBatch.java:97)
      	at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.execute(AbstractBatchImpl.java:147)
      	at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.executeBatch(JdbcCoordinatorImpl.java:206)
      	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:611)
      	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:456)
      	at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
      	at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
      	at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1435)
      	at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:491)
      	at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3201)
      	at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2411)
      	at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:467)
      	at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:146)
      	at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38)
      	at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:220)
      	at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68)
      	at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:582)
      	... 30 more
      Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("BAMBOO"."VCS_BRANCH"."NAME")
      
      	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:11190)
      

      Notes

      • Cannot reproduce with MySQL.
      • The empty string branch name that works in MySQL to identify trunk does not work in Oracle.
      • No empty string branch name is created in Oracle.
      • Trunk is the main repository but there is another branch plan created for trunk.
      • Every time it performs the branch detection process, the branch plan for trunk is increased by one (creating more duplicates).

              mwalerianczyk Marcin Walerianczyk
              pdemitrio Patricio (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

                Created:
                Updated:
                Resolved: