Details
Description
After several ubscribe/unsubscribe commands to activemq, subscribtions are not removed and there's error log in the broker:
java.lang.IllegalStateException: Cannot remove a consumer that had not been registered: ID:das-32775-1164773607925-3:1881:-1:2
at org.apache.activemq.broker.AbstractConnection.processRemoveConsumer(AbstractConnection.java:551)
at org.apache.activemq.command.RemoveInfo.visit(RemoveInfo.java:64)
at org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:237)
at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:61)
at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:92)
at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:67)
at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:123)
at org.apache.activemq.transport.stomp.StompTransportFilter.sendToActiveMQ(StompTransportFilter.java:70)
at org.apache.activemq.transport.stomp.ProtocolConverter.sendToActiveMQ(ProtocolConverter.java:112)
at org.apache.activemq.transport.stomp.ProtocolConverter.onStompUnsubscribe(ProtocolConverter.java:376)
at org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommad(ProtocolConverter.java:144)
at org.apache.activemq.transport.stomp.StompTransportFilter.onCommand(StompTransportFilter.java:60)
at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:88)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137)
at java.lang.Thread.run(Thread.java:595)
The problem is that there's internal map of subscriptions in ProtocolConverter class. On unsubscribe command, subscription is not removed from this internal map. Attached patch (against ProtocolConverter.java) fixes this bug