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.

Reply via email to