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.