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

Postprocessors should time out if can't get a connection to the db

    XMLWordPrintable

Details

    Description

      If the db conncetion is lost at the time a build is running, then the build will not end gracefully and would be spinning forever as if the build is in progress. This is the case even if the database connection is restored. The only solution at the moment is to restart the server.There is a deadlock reported in the logs which explained why the restart fixed the issue:

      2012-12-31 17:45:10,136 WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2] [BasicResourcePool] com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@64f875e8 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
      java.sql.SQLException: Listener refused the connection with the following error:
      ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
       
      	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
      	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
      	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
      	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
      	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
      	at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
      	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
      	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
      	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
      	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
      	at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
      	at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
      	at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
      Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
      ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
       
      	at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
      	at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
      	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
      	... 12 more
      2012-12-31 17:45:28,597 WARN [Timer-0] [ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@bf042b7 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
      2012-12-31 17:45:28,598 WARN [Timer-0] [ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@bf042b7 -- APPARENT DEADLOCK!!! Complete Status: 
      	Managed Threads: 3
      	Active Threads: 3
      	Active Tasks: 
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4b7ae2f (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@370c9214 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1a4a7b48 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
      	Pending Tasks: 
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@fe3c174
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@31b1aed2
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@84c767b
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@53f6897e
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@5ebcda42
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@409d53a5
      Pool thread stack traces:
      	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
      		java.lang.Thread.sleep(Native Method)
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
      		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
      	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
      		java.lang.Thread.sleep(Native Method)
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
      		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
      	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
      		java.lang.Thread.sleep(Native Method)
      		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
      		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
      

      It seems to be database related because this issue is not replicated on MYSQL database but on ORACLE 11G. In MYSQL, the build continued after the restoration of the database connection.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              smaiyaki Sultan Maiyaki (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: