Details
Description
When JMS selectors are used with topics, the attempt to deregister the topic subscriber's temporary queue can silently fail. This leaves the queue bound to the exchange, thereby allowing messages to continue being sent to it.
This is shown in the following log excerpts from a v0.5 Broker:
Initial set-up of topic with selector:
2013-04-02 04:11:51,947 INFO [pool-1-thread-22] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)/ch:1] [vh(/ZZZ)/qu(tmp_yyy.yyy.yyy.yyy45309_2)] QUE-1001 : Create : Owner: xxx AutoDelete Transient 2013-04-02 04:11:51,949 INFO [pool-1-thread-22] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)/ch:1] [vh(/ZZZ)/ex(direct/<<default>>)/qu(tmp_yyy.yyy.yyy.yyy45309_2)/rk(tmp_yyy.yyy.yyy.yyy45309_2)] BND-1001 : Create 2013-04-02 04:11:51,957 INFO [pool-1-thread-23] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)/ch:1] [vh(/ZZZ)/ex(topic/amq.topic)/qu(tmp_yyy.yyy.yyy.yyy45309_2)/rk(XXX_Topic)] BND-1001 : Create : Arguments : {x-filter-jms-selector=[LONG_STRING: XXX_GROUP='xxxxx']} 2013-04-02 04:11:51,977 INFO [pool-1-thread-15] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)/ch:1] [sub:4,117(vh(/ZZZ)/qu(tmp_yyy.yyy.yyy.yyy45309_2)] SUB-1001 : Create : Arguments : JMSSelector(XXX_GROUP='xxxxx') 2013-04-02 14:14:02,663 INFO [pool-1-thread-30] queue.AMQQueueMBean (AMQQueueMBean.java:336) - QUEUE_DEPTH_ALERT On Queue tmp_yyy.yyy.yyy.yyy45309_2 - 4137Kb : Maximum queue depth threshold (4136Kb) breached.
Subsequent topic consumer close:
2013-04-02 23:59:21,538 INFO [pool-1-thread-23] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)] [sub:4,117(vh(/ZZZ)/qu(tmp_yyy.yyy.yyy.yyy45309_2)] SUB-1002 : Close 2013-04-02 23:59:21,538 INFO [pool-1-thread-23] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)] [vh(/ZZZ)/ex(topic/amq.topic)/qu(tmp_yyy.yyy.yyy.yyy45309_2)/rk(XXX_Topic)] BND-1002 : Deleted 2013-04-02 23:59:21,538 INFO [pool-1-thread-23] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)] [vh(/ZZZ)/ex(direct/<<default>>)/qu(tmp_yyy.yyy.yyy.yyy45309_2)/rk(tmp_yyy.yyy.yyy.yyy45309_2)] BND-1002 : Deleted 2013-04-02 23:59:21,538 INFO [pool-1-thread-23] rawloggers.Log4jMessageLogger (Log4jMessageLogger.java:69) - MESSAGE [con:199(xxxxx@/yyy.yyy.yyy.yyy:45309/ZZZ)] [vh(/ZZZ)/qu(tmp_yyy.yyy.yyy.yyy45309_2)] QUE-1002 : Deleted
Queue depth alerts continue even though the queue should have been deleted. Note that the depth is actually increasing, indicating that message are still being enqueued.
2013-04-03 05:22:34,463 INFO [pool-1-thread-14] queue.AMQQueueMBean (AMQQueueMBean.java:336) - QUEUE_DEPTH_ALERT On Queue tmp_yyy.yyy.yyy.yyy45309_2 - 4136Kb : Maximum queue depth threshold (4136Kb) breached. 2013-04-03 05:23:08,343 INFO [pool-1-thread-11] queue.AMQQueueMBean (AMQQueueMBean.java:336) - QUEUE_DEPTH_ALERT On Queue tmp_yyy.yyy.yyy.yyy45309_2 - 8570Kb : Maximum queue depth threshold (4136Kb) breached.