Description
The broker sends a FIN after receiving an unbind queue command. The stack trace (below) shows a ClassCastException caused by attempting to cast a MethodRegistry_0_91 to a MethodRegistry_0_9. The offending line of code appears to be line 117 in the QueueUnbindHandler (trunk):
MethodRegistry_0_9 methodRegistry = (MethodRegistry_0_9) session.getMethodRegistry();
Compare to line 153 in QueueBindHandler (trunk) which reads:
MethodRegistry methodRegistry = protocolConnection.getMethodRegistry();
Note: reproduced against version 0.12 and trunk r1221838.
2011-12-20 15:23:53,157 INFO [pool-3-thread-19] logging.Log4jMessageLogger (Log4jMessageLogger.java:72) - [con:0(guest@/127.0.0.1:51326/test)/ch:2] [vh(/test)/ex(fanout/demo_exchange)/qu(client259647)/rk(broadcastkey)] BND-1002 : Deleted
2011-12-20 15:23:53,158 ERROR [pool-3-thread-19] protocol.AMQProtocolEngine (AMQProtocolEngine.java:456) - Unexpected exception while processing frame. Closing connection.
java.lang.ClassCastException: org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91 cannot be cast to org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9
at org.apache.qpid.server.handler.QueueUnbindHandler.methodReceived(QueueUnbindHandler.java:117)
at org.apache.qpid.server.handler.ServerMethodDispatcherImpl_0_91.dispatchQueueUnbind(ServerMethodDispatcherImpl_0_91.java:165)
at org.apache.qpid.framing.amqp_0_91.QueueUnbindBodyImpl.execute(QueueUnbindBodyImpl.java:152)
at org.apache.qpid.server.state.AMQStateManager.methodReceived(AMQStateManager.java:205)
at org.apache.qpid.server.protocol.AMQProtocolEngine.methodFrameReceived(AMQProtocolEngine.java:390)
at org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:93)
at org.apache.qpid.server.protocol.AMQProtocolEngine.frameReceived(AMQProtocolEngine.java:334)
at org.apache.qpid.server.protocol.AMQProtocolEngine.dataBlockReceived(AMQProtocolEngine.java:283)
at org.apache.qpid.server.protocol.AMQProtocolEngine$1.run(AMQProtocolEngine.java:254)
at org.apache.qpid.pool.Job.processAll(Job.java:110)
at org.apache.qpid.pool.Job.run(Job.java:149)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)