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 (JIRA)" <ji...@apache.org> on 2009/12/09 16:09:52 UTC
[jira] Updated: (AMQ-2527) Intermittent hang of AMQ2102Test with
ibm jdk - demonstrated sync issue with message properties and dlq
processing for topics
[ https://issues.apache.org/activemq/browse/AMQ-2527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Tully updated AMQ-2527:
----------------------------
Attachment: AMQ-2527.patch.txt
fix attached and a bunch of mods to tests and waitForSlave timeout addition that resolve a bunch of intermittent failures on slow machines. Thanks Peter Jones
> Intermittent hang of AMQ2102Test with ibm jdk - demonstrated sync issue with message properties and dlq processing for topics
> ------------------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-2527
> URL: https://issues.apache.org/activemq/browse/AMQ-2527
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.3.0
> Reporter: Gary Tully
> Assignee: Gary Tully
> Fix For: 5.3.1
>
> Attachments: AMQ-2527.patch.txt
>
>
> Stack traces of all threads when the test is hanging. Looks like the issue is with concurrent access to the message properties hashmap during message copy.
> {code}
> ActiveMQ Transport: tcp:///127.0.0.1:56744[1] where all
> main:
> [1] sun.misc.Unsafe.park (native method)
> [2] java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:213)
> [3] java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos (AbstractQueuedSynchronizer.java:958)
> [4] java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos (AbstractQueuedSynchronizer.java:1,250)
> [5] java.util.concurrent.CountDownLatch.await (CountDownLatch.java:264)
> [6] org.apache.activemq.broker.TransportConnection.stop (TransportConnection.java:905)
> [7] org.apache.activemq.util.ServiceStopper.stop (ServiceStopper.java:41)
> [8] org.apache.activemq.broker.TransportConnector.stop (TransportConnector.java:281)
> [9] org.apache.activemq.util.ServiceStopper.stop (ServiceStopper.java:41)
> [10] org.apache.activemq.broker.BrokerService.stopAllConnectors (BrokerService.java:1,536)
> [11] org.apache.activemq.broker.BrokerService.stop (BrokerService.java:508)
> [12] org.apache.activemq.bugs.AMQ2021Test.tearDown (AMQ2021Test.java:94)
> [13] junit.framework.TestCase.runBare (TestCase.java:140)
> [14] junit.framework.TestResult$1.protect (TestResult.java:110)
> [15] junit.framework.TestResult.runProtected (TestResult.java:128)
> [16] junit.framework.TestResult.run (TestResult.java:113)
> [17] junit.framework.TestCase.run (TestCase.java:124)
> [18] junit.framework.TestSuite.runTest (TestSuite.java:232)
> [19] junit.framework.TestSuite.run (TestSuite.java:227)
> [20] org.junit.internal.runners.JUnit38ClassRunner.run (JUnit38ClassRunner.java:79)
> [21] org.apache.maven.surefire.junit4.JUnit4TestSet.execute (JUnit4TestSet.java:62)
> [22] org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet (AbstractDirectoryTestSuite.java:140)
> [23] org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute (AbstractDirectoryTestSuite.java:165)
> [24] org.apache.maven.surefire.Surefire.run (Surefire.java:107)
> [25] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
> [26] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
> [27] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:37)
> [28] java.lang.reflect.Method.invoke (Method.java:599)
> [29] org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess (SurefireBooter.java:289)
> [30] org.apache.maven.surefire.booter.SurefireBooter.main (SurefireBooter.java:1,005)
> JIT Compilation Thread:
> Signal Dispatcher:
> [1] com.ibm.misc.SignalDispatcher.waitForSignal (native method)
> [2] com.ibm.misc.SignalDispatcher.run (SignalDispatcher.java:54)
> Gc Slave Thread:
> Gc Slave Thread:
> Gc Slave Thread:
> Finalizer thread:
> ActiveMQ Scheduler:
> [1] java.lang.Object.wait (native method)
> [2] java.lang.Object.wait (Object.java:196)
> [3] java.util.Timer$TimerImpl.run (Timer.java:230)
> ActiveMQ Data File Writer:
> [1] java.lang.Object.wait (native method)
> [2] java.lang.Object.wait (Object.java:167)
> [3] org.apache.activemq.kaha.impl.async.NIODataFileAppender.processQueue (NIODataFileAppender.java:79)
> [4] org.apache.activemq.kaha.impl.async.DataFileAppender$2.run (DataFileAppender.java:234)
> MemoryPoolMXBean notification dispatcher:
> [1] com.ibm.lang.management.MemoryNotificationThread.processNotificationLoop (native method)
> [2] com.ibm.lang.management.MemoryNotificationThread.run (MemoryNotificationThread.java:55)
> OperatingSystemMXBean notification dispatcher:
> [1] com.ibm.lang.management.OperatingSystemNotificationThread.processNotificationLoop (native method)
> [2] com.ibm.lang.management.OperatingSystemNotificationThread.run (OperatingSystemNotificationThread.java:39)
> RMI Scheduler(0):
> [1] sun.misc.Unsafe.park (native method)
> [2] java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:213)
> [3] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:1,974)
> [4] java.util.concurrent.DelayQueue.take (DelayQueue.java:175)
> [5] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:593)
> [6] java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:586)
> [7] java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:957)
> [8] java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:917)
> [9] java.lang.Thread.run (Thread.java:735)
> RMI TCP Accept-1099:
> [1] java.net.PlainSocketImpl.socketAccept (native method)
> [2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:414)
> [3] java.net.ServerSocket.implAccept (ServerSocket.java:464)
> [4] java.net.ServerSocket.accept (ServerSocket.java:432)
> [5] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop (TCPTransport.java:381)
> [6] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run (TCPTransport.java:353)
> [7] java.lang.Thread.run (Thread.java:735)
> RMI TCP Accept-0:
> [1] java.net.PlainSocketImpl.socketAccept (native method)
> [2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:414)
> [3] java.net.ServerSocket.implAccept (ServerSocket.java:464)
> [4] java.net.ServerSocket.accept (ServerSocket.java:432)
> [5] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop (TCPTransport.java:381)
> [6] sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run (TCPTransport.java:353)
> [7] java.lang.Thread.run (Thread.java:735)
> RMI Reaper:
> [1] java.lang.Object.wait (native method)
> [2] java.lang.Object.wait (Object.java:196)
> [3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:107)
> [4] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:79)
> [5] sun.rmi.transport.ObjectTable$Reaper.run (ObjectTable.java:350)
> [6] java.lang.Thread.run (Thread.java:735)
> GC Daemon:
> [1] java.lang.Object.wait (native method)
> [2] java.lang.Object.wait (Object.java:196)
> [3] sun.misc.GC$Daemon.run (GC.java:112)
> RMI RenewClean-[10.65.4.113:56702]:
> [1] java.lang.Object.wait (native method)
> [2] java.lang.Object.wait (Object.java:196)
> [3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:107)
> [4] sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run (DGCClient.java:528)
> [5] java.lang.Thread.run (Thread.java:735)
> ActiveMQ Transport: tcp://localhost/127.0.0.1:61616:
> [1] java.net.SocketInputStream.socketRead0 (native method)
> [2] java.net.SocketInputStream.read (SocketInputStream.java:140)
> [3] org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill (TcpBufferedInputStream.java:50)
> [4] org.apache.activemq.transport.tcp.TcpBufferedInputStream.read (TcpBufferedInputStream.java:58)
> [5] java.io.DataInputStream.readInt (DataInputStream.java:381)
> [6] org.apache.activemq.openwire.OpenWireFormat.unmarshal (OpenWireFormat.java:272)
> [7] org.apache.activemq.transport.tcp.TcpTransport.readCommand (TcpTransport.java:210)
> [8] org.apache.activemq.transport.tcp.TcpTransport.doRun (TcpTransport.java:202)
> [9] org.apache.activemq.transport.tcp.TcpTransport.run (TcpTransport.java:185)
> [10] java.lang.Thread.run (Thread.java:735)
> ActiveMQ Transport: tcp://localhost/127.0.0.1:61616:
> [1] java.net.SocketInputStream.socketRead0 (native method)
> [2] java.net.SocketInputStream.read (SocketInputStream.java:140)
> [3] org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill (TcpBufferedInputStream.java:50)
> [4] org.apache.activemq.transport.tcp.TcpBufferedInputStream.read (TcpBufferedInputStream.java:58)
> [5] java.io.DataInputStream.readInt (DataInputStream.java:381)
> [6] org.apache.activemq.openwire.OpenWireFormat.unmarshal (OpenWireFormat.java:272)
> [7] org.apache.activemq.transport.tcp.TcpTransport.readCommand (TcpTransport.java:210)
> [8] org.apache.activemq.transport.tcp.TcpTransport.doRun (TcpTransport.java:202)
> [9] org.apache.activemq.transport.tcp.TcpTransport.run (TcpTransport.java:185)
> [10] java.lang.Thread.run (Thread.java:735)
> ActiveMQ Transport: tcp:///127.0.0.1:56744:
> [1] java.util.HashMap.putAllImpl (HashMap.java:679)
> [2] java.util.HashMap.<init> (HashMap.java:369)
> [3] org.apache.activemq.command.Message.copy (Message.java:120)
> [4] org.apache.activemq.command.ActiveMQMessage.copy (ActiveMQMessage.java:64)
> [5] org.apache.activemq.command.ActiveMQTextMessage.copy (ActiveMQTextMessage.java:57)
> [6] org.apache.activemq.command.ActiveMQTextMessage.copy (ActiveMQTextMessage.java:52)
> [7] org.apache.activemq.broker.region.RegionBroker.sendToDeadLetterQueue (RegionBroker.java:710)
> [8] org.apache.activemq.broker.region.PrefetchSubscription.sendToDLQ (PrefetchSubscription.java:462)
> [9] org.apache.activemq.broker.region.PrefetchSubscription.acknowledge (PrefetchSubscription.java:365)
> [10] org.apache.activemq.broker.region.AbstractRegion.acknowledge (AbstractRegion.java:369)
> [11] org.apache.activemq.broker.region.RegionBroker.acknowledge (RegionBroker.java:470)
> [12] org.apache.activemq.broker.TransactionBroker.acknowledge (TransactionBroker.java:195)
> [13] org.apache.activemq.broker.BrokerFilter.acknowledge (BrokerFilter.java:74)
> [14] org.apache.activemq.broker.BrokerFilter.acknowledge (BrokerFilter.java:74)
> [15] org.apache.activemq.broker.MutableBrokerFilter.acknowledge (MutableBrokerFilter.java:85)
> [16] org.apache.activemq.broker.TransportConnection.processMessageAck (TransportConnection.java:466)
> [17] org.apache.activemq.command.MessageAck.visit (MessageAck.java:205)
> [18] org.apache.activemq.broker.TransportConnection.service (TransportConnection.java:309)
> [19] org.apache.activemq.broker.TransportConnection$1.onCommand (TransportConnection.java:179)
> [20] org.apache.activemq.transport.TransportFilter.onCommand (TransportFilter.java:68)
> [21] org.apache.activemq.transport.WireFormatNegotiator.onCommand (WireFormatNegotiator.java:113)
> [22] org.apache.activemq.transport.InactivityMonitor.onCommand (InactivityMonitor.java:210)
> [23] org.apache.activemq.transport.TransportSupport.doConsume (TransportSupport.java:84)
> [24] org.apache.activemq.transport.tcp.TcpTransport.doRun (TcpTransport.java:203)
> [25] org.apache.activemq.transport.tcp.TcpTransport.run (TcpTransport.java:185)
> [26] java.lang.Thread.run (Thread.java:735)
> ActiveMQ Transport: tcp:///127.0.0.1:56733:
> [1] java.util.HashMap.putAllImpl (HashMap.java:679)
> [2] java.util.HashMap.<init> (HashMap.java:369)
> [3] org.apache.activemq.command.Message.copy (Message.java:120)
> [4] org.apache.activemq.command.ActiveMQMessage.copy (ActiveMQMessage.java:64)
> [5] org.apache.activemq.command.ActiveMQTextMessage.copy (ActiveMQTextMessage.java:57)
> [6] org.apache.activemq.command.ActiveMQTextMessage.copy (ActiveMQTextMessage.java:52)
> [7] org.apache.activemq.broker.region.RegionBroker.sendToDeadLetterQueue (RegionBroker.java:710)
> [8] org.apache.activemq.broker.region.PrefetchSubscription.sendToDLQ (PrefetchSubscription.java:462)
> [9] org.apache.activemq.broker.region.PrefetchSubscription.acknowledge (PrefetchSubscription.java:365)
> [10] org.apache.activemq.broker.region.AbstractRegion.acknowledge (AbstractRegion.java:369)
> [11] org.apache.activemq.broker.region.RegionBroker.acknowledge (RegionBroker.java:470)
> [12] org.apache.activemq.broker.TransactionBroker.acknowledge (TransactionBroker.java:195)
> [13] org.apache.activemq.broker.BrokerFilter.acknowledge (BrokerFilter.java:74)
> [14] org.apache.activemq.broker.BrokerFilter.acknowledge (BrokerFilter.java:74)
> [15] org.apache.activemq.broker.MutableBrokerFilter.acknowledge (MutableBrokerFilter.java:85)
> [16] org.apache.activemq.broker.TransportConnection.processMessageAck (TransportConnection.java:466)
> [17] org.apache.activemq.command.MessageAck.visit (MessageAck.java:205)
> [18] org.apache.activemq.broker.TransportConnection.service (TransportConnection.java:309)
> [19] org.apache.activemq.broker.TransportConnection$1.onCommand (TransportConnection.java:179)
> [20] org.apache.activemq.transport.TransportFilter.onCommand (TransportFilter.java:68)
> [21] org.apache.activemq.transport.WireFormatNegotiator.onCommand (WireFormatNegotiator.java:113)
> [22] org.apache.activemq.transport.InactivityMonitor.onCommand (InactivityMonitor.java:210)
> [23] org.apache.activemq.transport.TransportSupport.doConsume (TransportSupport.java:84)
> [24] org.apache.activemq.transport.tcp.TcpTransport.doRun (TcpTransport.java:203)
> [25] org.apache.activemq.transport.tcp.TcpTransport.run (TcpTransport.java:185)
> [26] java.lang.Thread.run (Thread.java:735)
> InactivityMonitor ReadCheck:
> [1] java.lang.Object.wait (native method)
> [2] java.lang.Object.wait (Object.java:196)
> [3] java.util.Timer$TimerImpl.run (Timer.java:230)
> InactivityMonitor WriteCheck:
> [1] java.lang.Object.wait (native method)
> [2] java.lang.Object.wait (Object.java:196)
> [3] java.util.Timer$TimerImpl.run (Timer.java:230)
> ActiveMQ Transport: tcp://localhost/127.0.0.1:61616:
> [1] java.net.SocketInputStream.socketRead0 (native method)
> [2] java.net.SocketInputStream.read (SocketInputStream.java:140)
> [3] org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill (TcpBufferedInputStream.java:50)
> [4] org.apache.activemq.transport.tcp.TcpBufferedInputStream.read (TcpBufferedInputStream.java:58)
> [5] java.io.DataInputStream.readInt (DataInputStream.java:381)
> [6] org.apache.activemq.openwire.OpenWireFormat.unmarshal (OpenWireFormat.java:272)
> [7] org.apache.activemq.transport.tcp.TcpTransport.readCommand (TcpTransport.java:210)
> [8] org.apache.activemq.transport.tcp.TcpTransport.doRun (TcpTransport.java:202)
> [9] org.apache.activemq.transport.tcp.TcpTransport.run (TcpTransport.java:185)
> [10] java.lang.Thread.run (Thread.java:735)
> ActiveMQ Transport: tcp:///127.0.0.1:56754:
> [1] org.apache.activemq.broker.region.PrefetchSubscription.dispatchPending (PrefetchSubscription.java:582)
> [2] org.apache.activemq.broker.region.PrefetchSubscription.add (PrefetchSubscription.java:158)
> [3] org.apache.activemq.broker.region.DurableTopicSubscription.add (DurableTopicSubscription.java:199)
> [4] org.apache.activemq.broker.region.policy.SimpleDispatchPolicy.dispatch (SimpleDispatchPolicy.java:49)
> [5] org.apache.activemq.broker.region.Topic.dispatch (Topic.java:588)
> [6] org.apache.activemq.broker.region.Topic.doMessageSend (Topic.java:442)
> [7] org.apache.activemq.broker.region.Topic.send (Topic.java:376)
> [8] org.apache.activemq.broker.region.AbstractRegion.send (AbstractRegion.java:354)
> [9] org.apache.activemq.broker.region.RegionBroker.send (RegionBroker.java:445)
> [10] org.apache.activemq.broker.TransactionBroker.send (TransactionBroker.java:227)
> [11] org.apache.activemq.broker.BrokerFilter.send (BrokerFilter.java:126)
> [12] org.apache.activemq.broker.CompositeDestinationBroker.send (CompositeDestinationBroker.java:95)
> [13] org.apache.activemq.broker.MutableBrokerFilter.send (MutableBrokerFilter.java:133)
> [14] org.apache.activemq.broker.TransportConnection.processMessage (TransportConnection.java:459)
> [15] org.apache.activemq.command.ActiveMQMessage.visit (ActiveMQMessage.java:631)
> [16] org.apache.activemq.broker.TransportConnection.service (TransportConnection.java:309)
> [17] org.apache.activemq.broker.TransportConnection$1.onCommand (TransportConnection.java:179)
> [18] org.apache.activemq.transport.TransportFilter.onCommand (TransportFilter.java:68)
> [19] org.apache.activemq.transport.WireFormatNegotiator.onCommand (WireFormatNegotiator.java:113)
> [20] org.apache.activemq.transport.InactivityMonitor.onCommand (InactivityMonitor.java:210)
> [21] org.apache.activemq.transport.TransportSupport.doConsume (TransportSupport.java:84)
> [22] org.apache.activemq.transport.tcp.TcpTransport.doRun (TcpTransport.java:203)
> [23] org.apache.activemq.transport.tcp.TcpTransport.run (TcpTransport.java:185)
> [24] java.lang.Thread.run (Thread.java:735)
> QueueThread:queue://ActiveMQ.DLQ:
> [1] sun.misc.Unsafe.park (native method)
> [2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:173)
> [3] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:1,936)
> [4] java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:369)
> [5] java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:957)
> [6] java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:917)
> [7] java.lang.Thread.run (Thread.java:735)
> ActiveMQ Transport Stopper: /127.0.0.1:56733:
> [1] sun.misc.Unsafe.park (native method)
> [2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:173)
> [3] java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:758)
> [4] java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued (AbstractQueuedSynchronizer.java:789)
> [5] java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire (AbstractQueuedSynchronizer.java:1,125)
> [6] java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock (ReentrantReadWriteLock.java:818)
> [7] org.apache.activemq.broker.TransportConnection$3.run (TransportConnection.java:931)
> InactivityMonitor Async Task: java.util.concurrent.ThreadPoolExecutor$Worker@4700470:
> [1] sun.misc.Unsafe.park (native method)
> [2] java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:213)
> [3] java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill (SynchronousQueue.java:435)
> [4] java.util.concurrent.SynchronousQueue$TransferStack.transfer (SynchronousQueue.java:334)
> [5] java.util.concurrent.SynchronousQueue.poll (SynchronousQueue.java:885)
> [6] java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:955)
> [7] java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:917)
> [8] java.lang.Thread.run (Thread.java:735)
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.