<div dir="ltr">I'm not sure if I can send attachments in this mailing list, so I'll inline the data in the message. Please let me know if there are any issues or questions. I am using RabbitMQ Java client 3.0.1 w/ RabbitMQ server 3.1.1.<div>
<br></div><div><b><u>Thread Dump</u></b></div><div><br></div><div>I did a thread dump on a simple app and here is what seems to be the relevant portion when I try to reconsume (full thread dump at end of message):</div><div>
<br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>"AMQP Connection <a href="http://10.106.76.31:5672">10.106.76.31:5672</a>" prio=5 tid=0x00007fde3383e000 nid=0x6203 in Object.wait() [0x00000001104bc000]</div>
</div><div><div> java.lang.Thread.State: WAITING (on object monitor)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Object.wait(Native Method)</div></div><div><div><span class="" style="white-space:pre">        </span>- waiting on <0x00000007d5bfb028> (a com.rabbitmq.utility.BlockingValueOrException)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Object.wait(Object.java:503)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:50)</div>
</div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5bfb028> (a com.rabbitmq.utility.BlockingValueOrException)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:89)</div>
</div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5bfb028> (a com.rabbitmq.utility.BlockingValueOrException)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:972)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:941)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:933)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:926)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.avid.acs.example.rabbitmq.SimpleConsumerExample$SimpleConsumer.handleCancel(SimpleConsumerExample.java:50)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:395)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:533)</div>
</div></blockquote><div><br></div><div><b><u>Simple App to Reproduce</u></b><br></div><div><br></div><div>I <i>can</i> reproduce this in a simple Java app, which I will copy below. Here is how I reproduce it: </div><div>
<div><ul><li>You need a running active/active cluster with a policy to mirror the queue you will test with</li><li>Create the queue on node1 so that is where its master resides (with slave on node2)</li><li>Run the SimpleConsumerExample so it connects to node2</li>
<li>Restart RabbitMQ on node1 so that the master dies and the slave on node2 is promoted.<br></li></ul><div>At this point, we should see handleCancel invoked (it is) and then reconsume from the channel (this is where it hangs).</div>
</div></div><div><br></div><div><b><u>The Java Example Code</u></b></div><div><b><u><br></u></b></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font face="courier new, monospace">package example.rabbitmq;</font></div>
</div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace">import com.rabbitmq.client.AMQP;</font></div></div><div><div><font face="courier new, monospace">import com.rabbitmq.client.Channel;</font></div>
</div><div><div><font face="courier new, monospace">import com.rabbitmq.client.Connection;</font></div></div><div><div><font face="courier new, monospace">import com.rabbitmq.client.ConnectionFactory;</font></div></div><div>
<div><font face="courier new, monospace">import com.rabbitmq.client.DefaultConsumer;</font></div></div><div><div><font face="courier new, monospace">import com.rabbitmq.client.Envelope;</font></div></div><div><div><font face="courier new, monospace"><br>
</font></div></div><div><div><font face="courier new, monospace">import java.io.IOException;</font></div></div><div><div><br></div></div><div><div><font face="courier new, monospace">public class SimpleConsumerExample {</font></div>
</div><div><div><font face="courier new, monospace"> private static final String DEFAULT_URI = "amqp://localhost";</font></div></div><div><div><font face="courier new, monospace"> private static final String DEFAULT_QUEUE = "test_queue";</font></div>
</div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"> public static void main(String[] args) throws Exception {</font></div></div><div><div><font face="courier new, monospace"> String uri = args.length > 0 ? args[0] : DEFAULT_URI;</font></div>
</div><div><div><font face="courier new, monospace"> String queueName = args.length > 1 ? args[1] : DEFAULT_QUEUE;</font></div></div><div><div><font face="courier new, monospace"> ConnectionFactory factory = new ConnectionFactory();</font></div>
</div><div><div><font face="courier new, monospace"> factory.setUri(uri);</font></div></div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"> Connection connection = factory.newConnection();</font></div>
</div><div><div><font face="courier new, monospace"> Channel channel = connection.createChannel();</font></div></div><div><div><font face="courier new, monospace"> String queue = channel.queueDeclare(queueName, true, false, false, null).getQueue();</font></div>
</div><div><div><font face="courier new, monospace"> String cTag = channel.basicConsume(queue, true, new SimpleConsumer(channel, queue));</font></div></div><div><div><font face="courier new, monospace"> System.out.println("basicConsume: " + cTag);</font></div>
</div><div><div><font face="courier new, monospace"> }</font></div></div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"> public static class SimpleConsumer extends DefaultConsumer {</font></div>
</div><div><div><font face="courier new, monospace"> private String queue;</font></div></div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"> public SimpleConsumer(Channel channel, String queue) {</font></div>
</div><div><div><font face="courier new, monospace"> super(channel);</font></div></div><div><div><font face="courier new, monospace"> this.queue = queue;</font></div></div><div><div><font face="courier new, monospace"> }</font></div>
</div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"> @Override</font></div></div><div><div><font face="courier new, monospace"> public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {</font></div>
</div><div><div><font face="courier new, monospace"> System.out.println("handleDelivery: " + consumerTag);</font></div></div><div><div><font face="courier new, monospace"> }</font></div></div><div>
<div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"> @Override</font></div></div><div><div><font face="courier new, monospace"> public void handleCancel(String consumerTag) throws IOException {</font></div>
</div><div><div><font face="courier new, monospace"> System.out.println("handleCancel: " + consumerTag);</font></div></div><div><div><font face="courier new, monospace"> super.handleCancel(consumerTag);</font></div>
</div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"> String cTag = getChannel().basicConsume(queue, this);</font></div></div><div><div><font face="courier new, monospace"> System.out.println("basic(Re)Consume: " + cTag); // <-- Never gets here</font></div>
</div><div><div><font face="courier new, monospace"> }</font></div></div><div><div><font face="courier new, monospace"> }</font></div></div><div><div><font face="courier new, monospace">}</font></div></div></blockquote>
<div><div style="text-decoration:underline"><br></div></div><div><b><u>The Thread Dump</u></b></div><div><b><u><br></u></b></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div>Full thread dump OpenJDK 64-Bit Server VM (24.0-b49 mixed mode):</div>
</div><div><div><br></div></div><div><div>"DestroyJavaVM" prio=5 tid=0x00007fde35802000 nid=0x1d03 waiting on condition [0x0000000000000000]</div></div><div><div> java.lang.Thread.State: RUNNABLE</div></div><div>
<div><br></div></div><div><div>"pool-1-thread-1" prio=5 tid=0x00007fde338a7800 nid=0x6603 waiting on condition [0x000000011072d000]</div></div><div><div> java.lang.Thread.State: WAITING (parking)</div></div><div>
<div><span class="" style="white-space:pre">        </span>at sun.misc.Unsafe.park(Native Method)</div></div><div><div><span class="" style="white-space:pre">        </span>- parking to wait for <0x00000007d57e8fe8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Thread.run(Thread.java:724)</div></div><div><div><br></div></div><div><div>"pool-2-thread-1" prio=5 tid=0x00007fde3504d800 nid=0x6403 waiting on condition [0x000000011062a000]</div>
</div><div><div> java.lang.Thread.State: TIMED_WAITING (parking)</div></div><div><div><span class="" style="white-space:pre">        </span>at sun.misc.Unsafe.park(Native Method)</div></div><div><div><span class="" style="white-space:pre">        </span>- parking to wait for <0x00000007d5c4f300> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Thread.run(Thread.java:724)</div>
</div><div><div><br></div></div><div><div>"AMQP Connection <a href="http://10.106.76.31:5672">10.106.76.31:5672</a>" prio=5 tid=0x00007fde3383e000 nid=0x6203 in Object.wait() [0x00000001104bc000]</div></div><div>
<div> java.lang.Thread.State: WAITING (on object monitor)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Object.wait(Native Method)</div></div><div><div><span class="" style="white-space:pre">        </span>- waiting on <0x00000007d5bfb028> (a com.rabbitmq.utility.BlockingValueOrException)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Object.wait(Object.java:503)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:50)</div>
</div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5bfb028> (a com.rabbitmq.utility.BlockingValueOrException)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:89)</div>
</div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5bfb028> (a com.rabbitmq.utility.BlockingValueOrException)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:972)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:941)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:933)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:926)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.avid.acs.example.rabbitmq.SimpleConsumerExample$SimpleConsumer.handleCancel(SimpleConsumerExample.java:50)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:395)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)</div></div><div><div><span class="" style="white-space:pre">        </span>at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:533)</div>
</div><div><div><br></div></div><div><div>"Monitor Ctrl-Break" daemon prio=5 tid=0x00007fde34009000 nid=0x6003 runnable [0x000000011035c000]</div></div><div><div> java.lang.Thread.State: RUNNABLE</div></div><div>
<div><span class="" style="white-space:pre">        </span>at java.net.SocketInputStream.socketRead0(Native Method)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.net.SocketInputStream.read(SocketInputStream.java:150)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.net.SocketInputStream.read(SocketInputStream.java:121)</div></div><div><div><span class="" style="white-space:pre">        </span>at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)</div></div><div><div><span class="" style="white-space:pre">        </span>at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)</div>
</div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5657698> (a java.io.InputStreamReader)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.io.InputStreamReader.read(InputStreamReader.java:184)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.io.BufferedReader.fill(BufferedReader.java:154)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.io.BufferedReader.readLine(BufferedReader.java:317)</div>
</div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5657698> (a java.io.InputStreamReader)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.io.BufferedReader.readLine(BufferedReader.java:382)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at com.intellij.rt.execution.application.AppMain$1.run(AppMain.java:85)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Thread.run(Thread.java:724)</div>
</div><div><div><br></div></div><div><div>"Service Thread" daemon prio=5 tid=0x00007fde3308f000 nid=0x5c03 runnable [0x0000000000000000]</div></div><div><div> java.lang.Thread.State: RUNNABLE</div></div><div><div>
<br></div></div><div><div>"C2 CompilerThread1" daemon prio=5 tid=0x00007fde3308e800 nid=0x5a03 waiting on condition [0x0000000000000000]</div></div><div><div> java.lang.Thread.State: RUNNABLE</div></div><div><div>
<br></div></div><div><div>"C2 CompilerThread0" daemon prio=5 tid=0x00007fde3308d000 nid=0x5803 waiting on condition [0x0000000000000000]</div></div><div><div> java.lang.Thread.State: RUNNABLE</div></div><div><div>
<br></div></div><div><div>"Signal Dispatcher" daemon prio=5 tid=0x00007fde33035000 nid=0x5603 waiting on condition [0x0000000000000000]</div></div><div><div> java.lang.Thread.State: RUNNABLE</div></div><div><div>
<br></div></div><div><div>"Finalizer" daemon prio=5 tid=0x00007fde33818800 nid=0x4603 in Object.wait() [0x000000010f9f2000]</div></div><div><div> java.lang.Thread.State: WAITING (on object monitor)</div></div>
<div><div><span class="" style="white-space:pre">        </span>at java.lang.Object.wait(Native Method)</div></div><div><div><span class="" style="white-space:pre">        </span>- waiting on <0x00000007d5505448> (a java.lang.ref.ReferenceQueue$Lock)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)</div></div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5505448> (a java.lang.ref.ReferenceQueue$Lock)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)</div>
</div><div><div><br></div></div><div><div>"Reference Handler" daemon prio=5 tid=0x00007fde33817800 nid=0x4403 in Object.wait() [0x000000010f8ef000]</div></div><div><div> java.lang.Thread.State: WAITING (on object monitor)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Object.wait(Native Method)</div></div><div><div><span class="" style="white-space:pre">        </span>- waiting on <0x00000007d5504fd0> (a java.lang.ref.Reference$Lock)</div>
</div><div><div><span class="" style="white-space:pre">        </span>at java.lang.Object.wait(Object.java:503)</div></div><div><div><span class="" style="white-space:pre">        </span>at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)</div>
</div><div><div><span class="" style="white-space:pre">        </span>- locked <0x00000007d5504fd0> (a java.lang.ref.Reference$Lock)</div></div><div><div><br></div></div><div><div>"VM Thread" prio=5 tid=0x00007fde33815000 nid=0x4203 runnable </div>
</div><div><div><br></div></div><div><div>"GC task thread#0 (ParallelGC)" prio=5 tid=0x00007fde3380e800 nid=0x3203 runnable </div></div><div><div><br></div></div><div><div>"GC task thread#1 (ParallelGC)" prio=5 tid=0x00007fde3303a800 nid=0x3403 runnable </div>
</div><div><div><br></div></div><div><div>"GC task thread#2 (ParallelGC)" prio=5 tid=0x00007fde3303b000 nid=0x3603 runnable </div></div><div><div><br></div></div><div><div>"GC task thread#3 (ParallelGC)" prio=5 tid=0x00007fde3303b800 nid=0x3803 runnable </div>
</div><div><div><br></div></div><div><div>"GC task thread#4 (ParallelGC)" prio=5 tid=0x00007fde3303c000 nid=0x3a03 runnable </div></div><div><div><br></div></div><div><div>"GC task thread#5 (ParallelGC)" prio=5 tid=0x00007fde3303d000 nid=0x3c03 runnable </div>
</div><div><div><br></div></div><div><div>"GC task thread#6 (ParallelGC)" prio=5 tid=0x00007fde3303d800 nid=0x3e03 runnable </div></div><div><div><br></div></div><div><div>"GC task thread#7 (ParallelGC)" prio=5 tid=0x00007fde3303e000 nid=0x4003 runnable </div>
</div><div><div><br></div></div><div><div>"VM Periodic Task Thread" prio=5 tid=0x00007fde33086000 nid=0x5e03 waiting on condition </div></div><div><div><br></div></div><div><div>JNI global references: 161</div></div>
<div><div><br></div></div><div><div>Heap</div></div><div><div> PSYoungGen total 38912K, used 10145K [0x00000007d5500000, 0x00000007d8000000, 0x0000000800000000)</div></div><div><div> eden space 33792K, 30% used [0x00000007d5500000,0x00000007d5ee8558,0x00000007d7600000)</div>
</div><div><div> from space 5120K, 0% used [0x00000007d7b00000,0x00000007d7b00000,0x00000007d8000000)</div></div><div><div> to space 5120K, 0% used [0x00000007d7600000,0x00000007d7600000,0x00000007d7b00000)</div></div>
<div><div> ParOldGen total 87040K, used 0K [0x0000000780000000, 0x0000000785500000, 0x00000007d5500000)</div></div><div><div> object space 87040K, 0% used [0x0000000780000000,0x0000000780000000,0x0000000785500000)</div>
</div><div><div> PSPermGen total 21504K, used 4385K [0x000000077ae00000, 0x000000077c300000, 0x0000000780000000)</div></div><div><div> object space 21504K, 20% used [0x000000077ae00000,0x000000077b248528,0x000000077c300000)</div>
</div></blockquote><div><div style="text-decoration:underline"><br></div></div><div><b><u>Conclusion</u></b></div><div><b><u><br></u></b></div><div>Thanks for any help you can give!</div><div><br></div><div>-Chris</div><div>
<br></div><div><b><u><br></u></b></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Aug 9, 2013 at 3:19 AM, Michael Klishin <span dir="ltr"><<a href="mailto:mklishin@gopivotal.com" target="_blank">mklishin@gopivotal.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Chris:<br>
<div class="im"><br>
> Whenever I try to do anything with the channel in my "handleCancel" method implementation, it blocks forever. I'm guessing there is a lock on the channel while I'm in that method, and that lock that prevents me from redeclaring queues or consuming from them?<br>
<br>
</div>Chris,<br>
<br>
There should be no lock that prevents operations from handleCancel.<br>
<br>
Can you use VisualVM or jstack to take a thread dump and see what method hangs?<br>
Do you see any alarms mentioned in RabbitMQ log?<br>
<br>
Is there a way you can reproduce this issue with a code sample you can post?<br>
--<br>
MK<br>
<br>
<br>_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
<br></blockquote></div><br></div>