[ 
https://issues.apache.org/jira/browse/AMQ-3681?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary Tully reopened AMQ-3681:
-----------------------------


Unfortunately the embedded derby jdbc store used in the unit tests does not 
support java.sql.Statement#setQueryTimeout

We need to use it in an oracle specific lock implementation of make its use 
configurable

                
> 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
>            Assignee: Rob Davies
>             Fix For: 5.6.0
>
>         Attachments: amq_stopping_slave.patch, amq_stopping_slave_2.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> 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 com.mycompany.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