One thing to note: you can provide your own implementation of the org.apache.activemq.store.jdbc.DefaultDatabaseLocker and implement keepAlive to be aware of your database backup policy.
If you go down this route and conceive a better default or optional strategy, feel free to submit it as a patch. 2009/3/11 magellings <[email protected]> > > Well it was butt-simple to get working like the c3p0 documentation said. I > upped the delay to 20s, unfortunately the master broker still failed. > > I'm kind of wondering how the slave would respond. My guess is it would > probably time out too. > > Any thoughts? > > See further below for the errors. > > > C:\WIP\ActiveMQ\apache-activemq-5.2.0-bin\apache-activemq-5.2.0\bin>activemq.bat > xbean:activemq.xml > ACTIVEMQ_HOME: > C:\WIP\ActiveMQ\apache-activemq-5.2.0-bin\apache-activemq-5.2.0\bin\.. > ACTIVEMQ_BASE: > C:\WIP\ActiveMQ\apache-activemq-5.2.0-bin\apache-activemq-5.2.0\bin\.. > Loading message broker from: xbean:activemq.xml > INFO DefaultCamelContext - JMX enabled. Using > InstrumentationLifecycleStrategy. > INFO MLog - MLog clients using log4j logging. > INFO C3P0Registry - Initializing c3p0-0.9.1.2 [built > 21-May-2007 15:04:56; debug? true; trace: 10] > INFO AbstractPoolBackedDataSource - Initializing c3p0 pool... > com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, > acquireRetryAttemp > ts -> 30, acquireRetryDelay -> 20000, autoCommitOnClose -> false, > automaticTestTable -> con_test, breakAfterAcquireFailure -> false, > checkoutTimeout - > > 30000, connectionCustomizerClassName -> null, connectionTesterClassName > -> > > com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 2rvy1 > 17z1wqpy2hxzkebp|18105e8, debugUnreturnedConnectionStackTraces -> false, > description -> null, driverClass -> > com.microsoft.sqlserver.jdbc.SQLServerDri > ver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> > false, identityToken -> 2rvy117z1wqpy2hxzkebp|18105e8, > idleConnectionTestPerio > d -> 30, initialPoolSize -> 10, jdbcUrl -> > jdbc:sqlserver://QG076619.qg.com:1433 > ;databaseName=activedb;user=sa;password=pa$$word, > maxAdministrativeTas > kTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 30, > maxIdleTimeExcessConnections -> 0, maxPoolSize -> 100, maxStatements -> > 200, > maxStatementsPerCon > nection -> 0, minPoolSize -> 10, numHelperThreads -> 3, > numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, > properties -> {user=** > ****, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> > false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, > use > sTraditionalReflectiveProxies -> false ] > INFO BrokerService - Using Persistence Adapter: > JDBCPersistenceAdaptor(com.mchange.v2.c3p0.ComboPooledDataSource [ > acquireIncrement > -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 20000, > autoCommitOnClose -> false, automaticTestTable -> con_test, > breakAfterAcquireFailure -> > false, checkoutTimeout -> 30000, connectionCustomizerClassName -> null, > connectionTesterClassName -> > com.mchange.v2.c3p0.impl.DefaultConnectionTester, > dataSourceName -> 2rvy117z1wqpy2hxzkebp|18105e8, > debugUnreturnedConnectionStackTraces -> false, description -> null, > driverClass -> com.microsoft.sql > server.jdbc.SQLServerDriver, factoryClassLocation -> null, > forceIgnoreUnresolvedTransactions -> false, identityToken -> > 2rvy117z1wqpy2hxzkebp|18105e8, > idleConnectionTestPeriod -> 30, initialPoolSize -> 10, jdbcUrl -> > jdbc:sqlserver://QG076619.qg.com:1433 > ;databaseName=activedb;user=sa;password=pa$$wo > rd, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> > 30, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 100, maxStatements -> > 200, maxStatementsPerConnection -> 0, minPoolSize -> 10, numHelperThreads > -> > 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null > , properties -> {user=******, password=******}, propertyCycle -> 0, > testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, > unreturnedCon > nectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]) > INFO JDBCPersistenceAdapter - Database driver recognized: > [microsoft_sql_server_2005_jdbc_driver] > INFO DefaultDatabaseLocker - Attempting to acquire the exclusive > lock to become the Master broker > INFO DefaultDatabaseLocker - Becoming the master on dataSource: > com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, > acquireRe > tryAttempts -> 30, acquireRetryDelay -> 20000, autoCommitOnClose -> false, > automaticTestTable -> con_test, breakAfterAcquireFailure -> false, checkout > Timeout -> 30000, connectionCustomizerClassName -> null, > connectionTesterClassName -> > com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName > -> 2rvy117z1wqpy2hxzkebp|18105e8, debugUnreturnedConnectionStackTraces -> > false, description -> null, driverClass -> com.microsoft.sqlserver.jdbc.SQL > ServerDriver, factoryClassLocation -> null, > forceIgnoreUnresolvedTransactions -> false, identityToken -> > 2rvy117z1wqpy2hxzkebp|18105e8, idleConnection > TestPeriod -> 30, initialPoolSize -> 10, jdbcUrl -> > jdbc:sqlserver://QG076619.qg.com:1433 > ;databaseName=activedb;user=sa;password=pa$$word, > maxAdminist > rativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 30, > maxIdleTimeExcessConnections -> 0, maxPoolSize -> 100, maxStatements -> > 200, > maxStateme > ntsPerConnection -> 0, minPoolSize -> 10, numHelperThreads -> 3, > numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, > properties -> > {user=******, password=******}, propertyCycle -> 0, > testConnectionOnCheckin > -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout > -> 0, usesTraditionalReflectiveProxies -> false ] > INFO BrokerService - ActiveMQ 5.2.0 JMS Message Broker > (master) is starting > INFO BrokerService - For help or more information please > see: http://activemq.apache.org/ > INFO TransportServerThreadSupport - Listening for connections at: > tcp://QG076619:61616 > INFO TransportConnector - Connector openwire Started > INFO TransportServerThreadSupport - Listening for connections at: > ssl://QG076619:61617 > INFO TransportConnector - Connector ssl Started > INFO TransportServerThreadSupport - Listening for connections at: > stomp://QG076619:61613 > INFO TransportConnector - Connector stomp Started > INFO TransportServerThreadSupport - Listening for connections at: > xmpp://QG076619:61222 > INFO TransportConnector - Connector xmpp Started > INFO BrokerService - ActiveMQ JMS Message Broker (master, > ID:QG076619-3632-1236812198396-0:0) started > INFO log - Logging to > org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via > org.mortbay.log.Slf4jLog > INFO log - jetty-6.1.9 > INFO WebConsoleStarter - ActiveMQ WebConsole initialized. > INFO /admin - Initializing Spring FrameworkServlet > 'dispatcher' > INFO log - ActiveMQ Console at > http://0.0.0.0:8162/admin > INFO log - ActiveMQ Web Demos at > http://0.0.0.0:8162/demo > INFO log - RESTful file access application at > http://0.0.0.0:8162/fileserver > INFO log - Started > [email protected]:8162 > WARN BrokerRegistry - Broker localhost not started so > using > master instead > INFO TransportConnector - Connector vm://localhost Started > > > Then BOOM! Although behavior is different. Now it takes longer to stop. > :) "The connection to '/10.0.1.5:3333' is taking a long time to > shutdown." > If you look closely you can see activeMQ is timing out. > > > > > ERROR DefaultDatabaseLocker - Failed to update database lock: > com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by pe > et write error > com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: > socket write error > at > com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(Unknown Source) > at com.microsoft.sqlserver.jdbc.TDSChannel.write(Unknown Source) > at com.microsoft.sqlserver.jdbc.TDSWriter.flush(Unknown Source) > at com.microsoft.sqlserver.jdbc.TDSWriter.writePacket(Unknown > Source) > at com.microsoft.sqlserver.jdbc.TDSWriter.endMessage(Unknown Source) > at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(Unknown > Source) > at > > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown > Source) > at > > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown > Source) > at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source) > at > com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown > Source) > at > com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown > Source) > at > com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown > Source) > at > > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown > Source) > at > > com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105) > at > > org.apache.activemq.store.jdbc.DefaultDatabaseLocker.keepAlive(DefaultDatabaseLocker.java:118) > at > > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.databaseLockKeepAlive(JDBCPersistenceAdapter.java:481) > at > > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter$1.run(JDBCPersistenceAdapter.java:183) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) > at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) > at > > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) > at > > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) > at > > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > INFO GooGooStatementCache - Problem with checked-in Statement, > discarding. > com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed. > at > com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown > Source) > at > com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(Unknown > Source) > at > com.microsoft.sqlserver.jdbc.SQLServerStatement.checkClosed(Unknown Source) > at > > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.clearParameters(Unknown > Source) > at > > com.mchange.v2.c3p0.stmt.GooGooStatementCache.refreshStatement(GooGooStatementCache.java:604) > at > > com.mchange.v2.c3p0.stmt.GooGooStatementCache.checkinStatement(GooGooStatementCache.java:236) > at > > com.mchange.v2.c3p0.impl.NewPooledConnection.checkinStatement(NewPooledConnection.java:282) > at > > com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1807) > at > > org.apache.activemq.store.jdbc.DefaultDatabaseLocker.keepAlive(DefaultDatabaseLocker.java:127) > at > > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.databaseLockKeepAlive(JDBCPersistenceAdapter.java:481) > at > > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter$1.run(JDBCPersistenceAdapter.java:183) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) > at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) > at > > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) > at > > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) > at > > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > INFO JDBCPersistenceAdapter - No longer able to keep the exclusive > lock so giving up being a master > INFO BrokerService - ActiveMQ Message Broker (master, > ID:QG076619-3332-1236811661934-0:0) is shutting down > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > WARN ThreadPoolAsynchronousRunner - > com.mchange.v2.async.threadpoolasynchronousrunner$deadlockdetec...@1b00766 > -- APPARENT DEADLOCK!!! Crea > rgency threads for unassigned pending tasks! > WARN ThreadPoolAsynchronousRunner - > com.mchange.v2.async.threadpoolasynchronousrunner$deadlockdetec...@1b00766 > -- APPARENT DEADLOCK!!! Comp > tus: > Managed Threads: 3 > Active Threads: 3 > Active Tasks: > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@81933a > (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@e90097 > (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@125ee49 > (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThrea > Pending Tasks: > > com.mchange.v2.resourcepool.basicresourcepool$1destroyresourcet...@13f212a > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@19a6087 > > com.mchange.v2.resourcepool.basicresourcepool$1destroyresourcet...@37504d > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@178feba > > com.mchange.v2.resourcepool.basicresourcepool$1destroyresourcet...@9b86ea > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@b6a561 > > com.mchange.v2.resourcepool.basicresourcepool$1destroyresourcet...@123961b > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@153f141 > > com.mchange.v2.resourcepool.basicresourcepool$1destroyresourcet...@405f6 > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@235e9d > > com.mchange.v2.resourcepool.basicresourcepool$1destroyresourcet...@189cab > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@1d5b945 > > com.mchange.v2.resourcepool.basicresourcepool$acquiret...@767fb3 > > com.mchange.v2.c3p0.stmt.googoostatementcache$1statementcloset...@1b9e7fc > 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) > > > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > INFO TransportConnection - The connection to '/10.0.1.5:3333' > is > taking a long time to shutdown. > ERROR QueueStorePrefetch - Failed to get message count > java.io.IOException: An attempt by a client to checkout a Connection has > timed out. > at > > org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:45) > at > > org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:61) > at > > org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doGetMessageCount(DefaultJDBCAdapter.java:687) > at > > org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:208) > at > > org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:79) > at > > org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63) > at > > org.apache.activemq.broker.region.cursors.AbstractStoreCursor.gc(AbstractStoreCursor.java:212) > at > > org.apache.activemq.broker.region.cursors.StoreQueueCursor.gc(StoreQueueCursor.java:257) > at > org.apache.activemq.broker.region.Queue.removeSubscription(Queue.java:308) > at > > org.apache.activemq.broker.region.AbstractRegion.removeConsumer(AbstractRegion.java:324) > at > > org.apache.activemq.broker.region.RegionBroker.removeConsumer(RegionBroker.java:392) > at > > org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:114) > at > > org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:114) > at > > org.apache.activemq.advisory.AdvisoryBroker.removeConsumer(AdvisoryBroker.java:222) > at > > org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:114) > at > > org.apache.activemq.broker.MutableBrokerFilter.removeConsumer(MutableBrokerFilter.java:121) > at > > org.apache.activemq.broker.TransportConnection.processRemoveConsumer(TransportConnection.java:565) > at > > org.apache.activemq.broker.TransportConnection.processRemoveSession(TransportConnection.java:600) > at > > org.apache.activemq.broker.TransportConnection.processRemoveConnection(TransportConnection.java:705) > at > > org.apache.activemq.broker.TransportConnection.doStop(TransportConnection.java:1000) > at > > org.apache.activemq.broker.jmx.ManagedTransportConnection.doStop(ManagedTransportConnection.java:74) > at > > org.apache.activemq.broker.TransportConnection$3.run(TransportConnection.java:925) > Caused by: java.sql.SQLException: An attempt by a client to checkout a > Connection has timed out. > at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) > at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65) > at > > com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:527) > at > > com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) > at > > org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:54) > ... 20 more > Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out > while waiting to acquire a resource from com.mchange.v2.resourcepo > resourcep...@d964af -- timeout at awaitAvailable() > at > > com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1317) > at > > com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557) > at > > com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477) > at > > com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525) > ... 22 more > WARN TransportConnection - Failed to remove consumer: > 9cf41a09-ad04-42c0-af9c-efcedb5e61a6:1:1. Reason: > java.lang.RuntimeException > o.IOException: An attempt by a client to checkout a Connection has timed > out. > java.lang.RuntimeException: java.io.IOException: An attempt by a client to > checkout a Connection has timed out. > at > > org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:66) > at > > org.apache.activemq.broker.region.cursors.AbstractStoreCursor.gc(AbstractStoreCursor.java:212) > at > > org.apache.activemq.broker.region.cursors.StoreQueueCursor.gc(StoreQueueCursor.java:257) > at > org.apache.activemq.broker.region.Queue.removeSubscription(Queue.java:308) > at > > org.apache.activemq.broker.region.AbstractRegion.removeConsumer(AbstractRegion.java:324) > at > > org.apache.activemq.broker.region.RegionBroker.removeConsumer(RegionBroker.java:392) > at > > org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:114) > at > > org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:114) > at > > org.apache.activemq.advisory.AdvisoryBroker.removeConsumer(AdvisoryBroker.java:222) > at > > org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:114) > at > > org.apache.activemq.broker.MutableBrokerFilter.removeConsumer(MutableBrokerFilter.java:121) > at > > org.apache.activemq.broker.TransportConnection.processRemoveConsumer(TransportConnection.java:565) > at > > org.apache.activemq.broker.TransportConnection.processRemoveSession(TransportConnection.java:600) > at > > org.apache.activemq.broker.TransportConnection.processRemoveConnection(TransportConnection.java:705) > at > > org.apache.activemq.broker.TransportConnection.doStop(TransportConnection.java:1000) > at > > org.apache.activemq.broker.jmx.ManagedTransportConnection.doStop(ManagedTransportConnection.java:74) > at > > org.apache.activemq.broker.TransportConnection$3.run(TransportConnection.java:925) > Caused by: java.io.IOException: An attempt by a client to checkout a > Connection has timed out. > at > > org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:45) > at > > org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:61) > at > > org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doGetMessageCount(DefaultJDBCAdapter.java:687) > at > > org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:208) > at > > org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:79) > at > > org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63) > ... 16 more > Caused by: java.sql.SQLException: An attempt by a client to checkout a > Connection has timed out. > at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) > at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65) > at > > com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:527) > at > > com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) > at > > org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:54) > ... 20 more > Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out > while waiting to acquire a resource from com.mchange.v2.resourcepo > resourcep...@d964af -- timeout at awaitAvailable() > at > > com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1317) > at > > com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557) > at > > com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477) > at > > com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525) > ... 22 more > INFO TransportConnector - Connector openwire Stopped > > > bsnyder wrote: > > > > On Tue, Mar 10, 2009 at 4:40 PM, magellings <[email protected]> > wrote: > >> > >> Thanks for the response Bruce. :) > >> > >> To my knowledge we aren't using a connection pooler. We're just > >> configuring > >> the activemq xml and letting activeMQ do its thing. One of my > colleagues > >> mentioned SNAC since we are using Sql Server, not sure if that is > similar > >> to > >> a connection pooler or not. > > > > The job of a JDBC connection pooler is to keep a pool of JDBC > > connections available for use by a Java application. IIRC, SNAC stands > > for SQL Native Client which has nothing to do with a JDBC connection > > pooler. > > > >> In our scenario during a Sql Server failover it may take 15 minutes. We > >> aren't using a high availability cluster. Does a connection pooler give > >> the > >> capability of dealing with this so that ActiveMQ doesn't shutdown? > > > > One of the options in a good JDBC connection pooler is the ability to > > test JDBC connections as it hands them out to the Java application. If > > the connection is stale for any reason the JDBC connection pooler will > > evict that connection from the pool and try the next one until it > > reaches one that is alive. To my knowledge, some JDBC connection > > poolers provide a the ability to configure some attributes like number > > of retries, etc. E.g., here is some information about what c3p0 > > offers: > > > > http://www.mchange.com/projects/c3p0/index.html#configuring_recovery > > > > The one big caveat I will mention is that longer outage periods such > > as the 15 minute outage you mention are not typically handled by a > > JDBC connection pooler as they're mainly geared toward handling > > momentary outages. As an example, notice that the default value for > > acquireRetryDelay in c3p0 is only one second: > > > > http://www.mchange.com/projects/c3p0/index.html#acquireRetryDelay > > > > But you could certainly configure this to any value you want. I > > encourage you to test this in your environment before deploying to > > production. > > > > Bruce > > -- > > perl -e 'print > > unpack("u30","D0G)u8...@4vyy9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*" > > );' > > > > Apache ActiveMQ - http://activemq.apache.org/ > > Apache Camel - http://camel.apache.org/ > > Apache ServiceMix - http://servicemix.apache.org/ > > > > Blog: http://bruceblog.org/ > > > > > > -- > View this message in context: > http://www.nabble.com/Is-there-JDBC-master-slave-retry-logic-if-database-goes-down--tp22440338p22466448.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > > -- http://blog.garytully.com Open Source SOA http://FUSESource.com
