GitHub user dudaerich opened a pull request:

    https://github.com/apache/activemq-artemis/pull/1622

    ARTEMIS-1485 ActiveMQTestBase.threadDump should print information about 
locks and deadlocks

    Improved implementation of ActiveMQTestBase.threadDump which uses 
ThreadMXBean
    for getting information about threads including locks and deadlocks.
    
    Sample of the thread dump
    
    ```
    Complete Thread dump  - fired by 
MultiThreadRandomReattachTestBase::runTestMultipleThreads (AMQ119014: Timed out 
after waiting 30,000 ms for response when sending packet 105)
    "Thread-4 (ActiveMQ-scheduled-threads)" Id=183 WAITING on 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@2dc00c99
        at sun.misc.Unsafe.park(Native Method)
        -  waiting on 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@2dc00c99
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
    
    "Thread-34 
(ActiveMQ-remoting-threads-ActiveMQServerImpl::serverUUID=1a0105d4-bd4f-11e7-973f-fa163e2a7ec6-440938038)"
 Id=160 WAITING on java.util.concurrent.CountDownLatch$Sync@41e2c73f
        at sun.misc.Unsafe.park(Native Method)
        -  waiting on java.util.concurrent.CountDownLatch$Sync@41e2c73f
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
        at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
        at 
org.apache.activemq.artemis.utils.SimpleFutureImpl.get(SimpleFutureImpl.java:62)
        at 
org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler.transferConnection(ServerSessionPacketHandler.java:911)
        at 
org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQPacketHandler.handleReattachSession(ActiveMQPacketHandler.java:242)
        at 
org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQPacketHandler.handlePacket(ActiveMQPacketHandler.java:103)
        at 
org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:638)
        at 
org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:392)
        -  locked java.lang.Object@1409cb91
        at 
org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:374)
        at 
org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:642)
        at 
org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnection$1.run(InVMConnection.java:196)
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
        at 
org.apache.activemq.artemis.utils.actors.ProcessorBase$ExecutorTask.run(ProcessorBase.java:53)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
    
        Number of locked synchronizers = 1
        - java.util.concurrent.ThreadPoolExecutor$Worker@1f764375
    
    
===============================================================================
    End Thread dump  - fired by 
MultiThreadRandomReattachTestBase::runTestMultipleThreads (AMQ119014: Timed out 
after waiting 30,000 ms for response when sending packet 105)
    
*******************************************************************************
    ```

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dudaerich/activemq-artemis ARTEMIS-1485

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/activemq-artemis/pull/1622.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1622
    
----
commit 726158d77fe2bdf4890586ee4435f93f5ad42852
Author: Erich Duda <[email protected]>
Date:   2017-10-30T08:41:23Z

    ARTEMIS-1485 ActiveMQTestBase.threadDump should print information about 
locks and deadlocks
    
    Improved implementation of ActiveMQTestBase.threadDump which uses 
ThreadMXBean
    for getting information about threads including locks and deadlocks.

----


---

Reply via email to