You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Venkatg <ve...@yahoo.com> on 2008/02/04 11:38:46 UTC

Hang on Session close

ActiveMQ is getting hang forever when trying to close the session. Here is
the thread dump. In our application when ever we need to change the selector
we close the session and consumer. Then recreate the session and consumer
with new selector. Sometimes when trying to close the session ActiveNQ hang
for ever. Please let me know how to resolve this issue. We are using
ActiveMQ  4.1.1 version

"ActiveMQ Session Task" daemon prio=8 tid=0x1a1af800 nid=0x1168 waiting for
monitor entry [0x2388f000..0x2388fc94]

   java.lang.Thread.State: BLOCKED (on object monitor)

            at
com.infinera.nm.ems.client.fault.CDMJMSInterface.onMessage(CDMJMSInterface.java:295)

            - waiting to lock <0x06017ae8> (a java.util.HashMap)

            at
org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:854)

            at
org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:99)

            at
org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:166)

            at
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:117)

            at
org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRunner.java:26)

            at
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:44)

            at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)

            at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)

            at java.lang.Thread.run(Thread.java:619)

"Thread-13" prio=6 tid=0x1a095400 nid=0x1240 waiting for monitor entry
[0x1ad2f000..0x1ad2fb14]

   java.lang.Thread.State: BLOCKED (on object monitor)

            at
com.infinera.nm.ems.client.fault.CDMJMSInterface.processEventInfo(CDMJMSInterface.java:270)

            - waiting to lock <0x06017ae8> (a java.util.HashMap)

            at
com.infinera.nm.ems.client.fault.EventQueueProcessor.processEventInfo(EventQueueProcessor.java:198)

            at
com.infinera.nm.ems.client.fault.EventQueueProcessor.run(EventQueueProcessor.java:89)


AWT-EventQueue-0" prio=6 tid=0x1a021c00 nid=0x104c in Object.wait()
[0x1a9cf000..0x1a9cfb94]

   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.PooledTaskRunner.shutdown(PooledTaskRunner.java:89)

            - locked <0x06128518> (a
org.apache.activemq.thread.PooledTaskRunner$1)

            at
org.apache.activemq.ActiveMQSessionExecutor.stop(ActiveMQSessionExecutor.java:117)

            at
org.apache.activemq.ActiveMQSession.dispose(ActiveMQSession.java:540)

            - locked <0x060f08e8> (a org.apache.activemq.ActiveMQSession)

            at
org.apache.activemq.ActiveMQSession.close(ActiveMQSession.java:516)

            at
com.infinera.nm.ems.client.fault.SocketNotificationClient.changeCDMTopicMessageSelector(SocketNotificationClient.java:712)

            at
com.infinera.nm.ems.client.fault.MessageSelectorUtility.constructSelectorAndApplyForCDMTopic(MessageSelectorUtility.java:1104)

            at
com.infinera.nm.ems.client.fault.CDMJMSInterface.consolidateFilterMoids(CDMJMSInterface.java:190)

            at
com.infinera.nm.ems.client.fault.CDMJMSInterface.clearFilterforController(CDMJMSInterface.java:137)

            - locked <0x06017ae8> (a java.util.HashMap)

            at
com.infinera.nm.ems.client.cdm.controller.CDMController.cleanup(CDMController.java:99)

            at
com.infinera.nm.ems.client.cdm.ui.CDMMainFrame.dispose(CDMMainFrame.java:255)

            at javax.swing.JFrame.processWindowEvent(JFrame.java:287)

            at java.awt.Window.processEvent(Window.java:1774)

            at java.awt.Component.dispatchEventImpl(Component.java:4410)

            at java.awt.Container.dispatchEventImpl(Container.java:2116)

            at java.awt.Window.dispatchEventImpl(Window.java:2429)

            at java.awt.Component.dispatchEvent(Component.java:4240)

            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

            at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

            at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

            at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

            at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

            at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

            at
java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
-- 
View this message in context: http://www.nabble.com/Hang-on-Session-close-tp15265494s2354p15265494.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: Hang on Session close

Posted by ttmdev <jo...@ttmsolutions.com>.
It looks to me like your message listener is blocked. If there is a message
listener in-progress, the close method for a session or consumer blocks
until that in-progress message listener has completed. 

You don't have to close the session to change a selector. Close your
existing consumer and create a new one w/the new selector.  

Joe
 

Venkatg wrote:
> 
> ActiveMQ is getting hang forever when trying to close the session. Here is
> the thread dump. In our application when ever we need to change the
> selector we close the session and consumer. Then recreate the session and
> consumer with new selector. Sometimes when trying to close the session
> ActiveNQ hang for ever. Please let me know how to resolve this issue. We
> are using ActiveMQ  4.1.1 version
> 
> "ActiveMQ Session Task" daemon prio=8 tid=0x1a1af800 nid=0x1168 waiting
> for monitor entry [0x2388f000..0x2388fc94]
> 
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 
>             at
> com.infinera.nm.ems.client.fault.CDMJMSInterface.onMessage(CDMJMSInterface.java:295)
> 
>             - waiting to lock <0x06017ae8> (a java.util.HashMap)
> 
>             at
> org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:854)
> 
>             at
> org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:99)
> 
>             at
> org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:166)
> 
>             at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:117)
> 
>             at
> org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRunner.java:26)
> 
>             at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:44)
> 
>             at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> 
>             at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> 
>             at java.lang.Thread.run(Thread.java:619)
> 
> "Thread-13" prio=6 tid=0x1a095400 nid=0x1240 waiting for monitor entry
> [0x1ad2f000..0x1ad2fb14]
> 
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 
>             at
> com.infinera.nm.ems.client.fault.CDMJMSInterface.processEventInfo(CDMJMSInterface.java:270)
> 
>             - waiting to lock <0x06017ae8> (a java.util.HashMap)
> 
>             at
> com.infinera.nm.ems.client.fault.EventQueueProcessor.processEventInfo(EventQueueProcessor.java:198)
> 
>             at
> com.infinera.nm.ems.client.fault.EventQueueProcessor.run(EventQueueProcessor.java:89)
> 
> 
> AWT-EventQueue-0" prio=6 tid=0x1a021c00 nid=0x104c in Object.wait()
> [0x1a9cf000..0x1a9cfb94]
> 
>    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.PooledTaskRunner.shutdown(PooledTaskRunner.java:89)
> 
>             - locked <0x06128518> (a
> org.apache.activemq.thread.PooledTaskRunner$1)
> 
>             at
> org.apache.activemq.ActiveMQSessionExecutor.stop(ActiveMQSessionExecutor.java:117)
> 
>             at
> org.apache.activemq.ActiveMQSession.dispose(ActiveMQSession.java:540)
> 
>             - locked <0x060f08e8> (a org.apache.activemq.ActiveMQSession)
> 
>             at
> org.apache.activemq.ActiveMQSession.close(ActiveMQSession.java:516)
> 
>             at
> com.infinera.nm.ems.client.fault.SocketNotificationClient.changeCDMTopicMessageSelector(SocketNotificationClient.java:712)
> 
>             at
> com.infinera.nm.ems.client.fault.MessageSelectorUtility.constructSelectorAndApplyForCDMTopic(MessageSelectorUtility.java:1104)
> 
>             at
> com.infinera.nm.ems.client.fault.CDMJMSInterface.consolidateFilterMoids(CDMJMSInterface.java:190)
> 
>             at
> com.infinera.nm.ems.client.fault.CDMJMSInterface.clearFilterforController(CDMJMSInterface.java:137)
> 
>             - locked <0x06017ae8> (a java.util.HashMap)
> 
>             at
> com.infinera.nm.ems.client.cdm.controller.CDMController.cleanup(CDMController.java:99)
> 
>             at
> com.infinera.nm.ems.client.cdm.ui.CDMMainFrame.dispose(CDMMainFrame.java:255)
> 
>             at javax.swing.JFrame.processWindowEvent(JFrame.java:287)
> 
>             at java.awt.Window.processEvent(Window.java:1774)
> 
>             at java.awt.Component.dispatchEventImpl(Component.java:4410)
> 
>             at java.awt.Container.dispatchEventImpl(Container.java:2116)
> 
>             at java.awt.Window.dispatchEventImpl(Window.java:2429)
> 
>             at java.awt.Component.dispatchEvent(Component.java:4240)
> 
>             at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
> 
>             at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
> 
>             at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
> 
>             at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
> 
>             at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
> 
>             at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
> 
>             at
> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
> 

-- 
View this message in context: http://www.nabble.com/Hang-on-Session-close-tp15265494s2354p15269057.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.