DatabaseLocker should first cancel locking SQL statement before closing the SQL 
connection
------------------------------------------------------------------------------------------

                 Key: AMQ-3681
                 URL: https://issues.apache.org/jira/browse/AMQ-3681
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.4.2
         Environment: ServiceMix 4.3
            Reporter: metatech


ActiveMQ is configured in a Master/Slave configuration with an Oracle database :
http://activemq.apache.org/jdbc-master-slave.html
http://servicemix.apache.org/clustering.html
When the slave node is stopping, "activemq-broker" stays forever in the 
"Stopping" state.
This is because the locking SQL statement cannot be interrupted by just closing 
the JDBC connection.  It is also needed to "cancel" the SQL statement.
Here is a patch to DefaultDatabaseLocker which makes it compatible with Oracle.
Thanks.

{code}

"Thread-92" prio=10 tid=0x08c4d800 nid=0x1036 waiting for monitor entry 
[0x8ab3a000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at 
oracle.jdbc.driver.PhysicalConnection.isClosed(PhysicalConnection.java:1223)
        - waiting to lock <0xad4367e0> (a oracle.jdbc.driver.T4CConnection)
        at 
org.apache.commons.dbcp.DelegatingConnection.isClosed(DelegatingConnection.java:386)
        at 
org.apache.commons.dbcp.DelegatingConnection.isClosed(DelegatingConnection.java:386)
        at 
org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.isClosed(PoolingDataSource.java:201)
        at 
org.apache.activemq.store.jdbc.DefaultDatabaseLocker.stop(DefaultDatabaseLocker.java:137)
        at be.leforem.camel.component.sync.PoolCloser.close(PoolCloser.java:77)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:221)
        at 
org.apache.aries.blueprint.container.ServiceListener.invokeMethod(ServiceListener.java:98)
        at 
org.apache.aries.blueprint.container.ServiceListener.unregister(ServiceListener.java:65)
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to