You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (Created) (JIRA)" <ji...@apache.org> on 2012/01/27 12:32:40 UTC

[jira] [Created] (AMQ-3684) Potential deadlock in vm transport setListener when sender is blocked pending space

Potential deadlock in vm transport setListener when sender is blocked pending space
-----------------------------------------------------------------------------------

                 Key: AMQ-3684
                 URL: https://issues.apache.org/jira/browse/AMQ-3684
             Project: ActiveMQ
          Issue Type: Bug
          Components: Transport
    Affects Versions: 5.5.1
            Reporter: Gary Tully
            Assignee: Gary Tully
             Fix For: 5.6.0


Noticed an intermittent dead lock in test:
{code}
"ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7ddcdb9a0> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:485)
	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
	- locked <7ddcdb9a0> (a java.lang.Object)
	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
	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:680)
"RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
	at java.lang.Thread.run(Thread.java:680)
"main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
...{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

        

[jira] [Updated] (AMQ-3684) Potential deadlock in vm transport setListener when sender is blocked pending space

Posted by "Timothy Bish (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Timothy Bish updated AMQ-3684:
------------------------------

    Attachment: VMTransport.java

Here's a modded VMTransport.java that removes the use of the Valve class which has some contention issues, and replaces it with a ReentrantReadWriteLock.  Also improves on the lazy init code by taking advantage of changes made since Java 1.5.
                
> Potential deadlock in vm transport setListener when sender is blocked pending space
> -----------------------------------------------------------------------------------
>
>                 Key: AMQ-3684
>                 URL: https://issues.apache.org/jira/browse/AMQ-3684
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.5.1
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: vmtransport
>             Fix For: 5.6.0
>
>         Attachments: VMTransport.java
>
>
> Noticed an intermittent dead lock in test:
> {code}
> "ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7ddcdb9a0> (a java.lang.Object)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
> 	- locked <7ddcdb9a0> (a java.lang.Object)
> 	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
> 	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
> 	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
> 	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:680)
> "RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
> 	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
> 	at java.lang.Thread.run(Thread.java:680)
> "main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
> 	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
> 	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
> 	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> 	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> 	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
> 	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
> ...{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

        

[jira] [Reopened] (AMQ-3684) Potential deadlock in vm transport setListener when sender is blocked pending space

Posted by "Gary Tully (Reopened) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully reopened AMQ-3684:
-----------------------------


hmm, another variant of this, seems like enqueueValve needs to allow release when enqueue is blocked, but that requires knowledge of the blocking queue. Another case of blocked threads due to a blocked put.
{code}"ActiveMQ Task-3" daemon prio=5 tid=101a43800 nid=0x10c1c7000 in Object.wait() [10c1c6000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
        - locked <7dbf3c140> (a java.lang.Object)
        at org.apache.activemq.transport.vm.VMTransport.start(VMTransport.java:131)
        at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
        at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
        at org.apache.activemq.broker.TransportConnection.start(TransportConnection.java:895)
        - locked <7dbea0258> (a org.apache.activemq.broker.TransportConnection)
        at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:217)
        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:680)


"ActiveMQ Task-4" daemon prio=5 tid=101a19800 nid=0x10c4d0000 in Object.wait() [10c4cf000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <7dbf3c140> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.activemq.thread.Valve.increment(Valve.java:97)
        - locked <7dbf3c140> (a java.lang.Object)
        at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:196)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        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:680)

{code}
                
> Potential deadlock in vm transport setListener when sender is blocked pending space
> -----------------------------------------------------------------------------------
>
>                 Key: AMQ-3684
>                 URL: https://issues.apache.org/jira/browse/AMQ-3684
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.5.1
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: vmtransport
>             Fix For: 5.6.0
>
>
> Noticed an intermittent dead lock in test:
> {code}
> "ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7ddcdb9a0> (a java.lang.Object)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
> 	- locked <7ddcdb9a0> (a java.lang.Object)
> 	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
> 	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
> 	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
> 	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:680)
> "RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
> 	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
> 	at java.lang.Thread.run(Thread.java:680)
> "main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
> 	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
> 	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
> 	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> 	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> 	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
> 	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
> ...{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

        

[jira] [Resolved] (AMQ-3684) Potential deadlock in vm transport setListener when sender is blocked pending space

Posted by "Gary Tully (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully resolved AMQ-3684.
-----------------------------

    Resolution: Fixed

we now deal separately with the case of a put blocked on capacity limit. http://svn.apache.org/viewvc?view=rev&rev=1236664
                
> Potential deadlock in vm transport setListener when sender is blocked pending space
> -----------------------------------------------------------------------------------
>
>                 Key: AMQ-3684
>                 URL: https://issues.apache.org/jira/browse/AMQ-3684
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.5.1
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: vmtransport
>             Fix For: 5.6.0
>
>
> Noticed an intermittent dead lock in test:
> {code}
> "ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7ddcdb9a0> (a java.lang.Object)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
> 	- locked <7ddcdb9a0> (a java.lang.Object)
> 	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
> 	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
> 	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
> 	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:680)
> "RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
> 	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
> 	at java.lang.Thread.run(Thread.java:680)
> "main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
> 	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
> 	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
> 	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> 	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> 	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
> 	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
> ...{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

        

[jira] [Closed] (AMQ-3684) Potential deadlock in vm transport setListener when sender is blocked pending space

Posted by "Gary Tully (Closed) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully closed AMQ-3684.
---------------------------

    
> Potential deadlock in vm transport setListener when sender is blocked pending space
> -----------------------------------------------------------------------------------
>
>                 Key: AMQ-3684
>                 URL: https://issues.apache.org/jira/browse/AMQ-3684
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.5.1
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: vmtransport
>             Fix For: 5.6.0
>
>         Attachments: VMTransport.java
>
>
> Noticed an intermittent dead lock in test:
> {code}
> "ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7ddcdb9a0> (a java.lang.Object)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
> 	- locked <7ddcdb9a0> (a java.lang.Object)
> 	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
> 	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
> 	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
> 	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:680)
> "RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
> 	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
> 	at java.lang.Thread.run(Thread.java:680)
> "main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
> 	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
> 	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
> 	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> 	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> 	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
> 	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
> ...{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

        

[jira] [Commented] (AMQ-3684) Potential deadlock in vm transport setListener when sender is blocked pending space

Posted by "Johno Crawford (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AMQ-3684?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13249892#comment-13249892 ] 

Johno Crawford commented on AMQ-3684:
-------------------------------------

Are we ok to close this ticket? I see there has been a lot of work done to VMTransport related to sync.
                
> Potential deadlock in vm transport setListener when sender is blocked pending space
> -----------------------------------------------------------------------------------
>
>                 Key: AMQ-3684
>                 URL: https://issues.apache.org/jira/browse/AMQ-3684
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.5.1
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: vmtransport
>             Fix For: 5.6.0
>
>         Attachments: VMTransport.java
>
>
> Noticed an intermittent dead lock in test:
> {code}
> "ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7ddcdb9a0> (a java.lang.Object)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
> 	- locked <7ddcdb9a0> (a java.lang.Object)
> 	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
> 	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
> 	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
> 	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:680)
> "RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
> 	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
> 	at java.lang.Thread.run(Thread.java:680)
> "main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
> 	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
> 	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
> 	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> 	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> 	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
> 	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
> ...{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

        

[jira] [Resolved] (AMQ-3684) Potential deadlock in vm transport setListener when sender is blocked pending space

Posted by "Gary Tully (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully resolved AMQ-3684.
-----------------------------

    Resolution: Fixed

this is sorted by tim's changes. thanks
                
> Potential deadlock in vm transport setListener when sender is blocked pending space
> -----------------------------------------------------------------------------------
>
>                 Key: AMQ-3684
>                 URL: https://issues.apache.org/jira/browse/AMQ-3684
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.5.1
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: vmtransport
>             Fix For: 5.6.0
>
>         Attachments: VMTransport.java
>
>
> Noticed an intermittent dead lock in test:
> {code}
> "ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7ddcdb9a0> (a java.lang.Object)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
> 	- locked <7ddcdb9a0> (a java.lang.Object)
> 	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
> 	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
> 	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
> 	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
> 	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:680)
> "RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
> 	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
> 	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
> 	at java.lang.Thread.run(Thread.java:680)
> "main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
> 	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
> 	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
> 	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> 	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> 	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
> 	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
> ...{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