<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi RabbitMQ Discuss,<div><br></div><div>I have a problem with my client application, using the 3.2.2 Java library. </div><div><br></div><div>Multiple calls made to 'RPC’ methods, such as <font face="Monaco">exchangeDeclare</font> block (interminably) if the call is made while the connection is down, but before it times out.</div><div><br></div><div>From my basic understanding, it looks like AMQChannel blocks incoming ‘RPC’ methods using .<font face="Monaco">wait</font> in <font face="Monaco">enqueueRpc</font>. When a <font face="Monaco">ShutdownSignalException</font> comes in via <span style="font-family: Monaco; font-size: 11px;">processShutdownSignal</span>, it clears only one of the ‘next’ RPC calls waiting because, even though notifyAll is used, the while loop containing the .<font face="Monaco">wait</font> will only be cleared by one of the incoming threads?</div><div><br></div><div>This situation is only apparent for my application during a ConnectionTimeout, which I haven’t been able to simulate in a controlled manner. For testing connection failures, I use a script which makes and breaks a proxy to the real server (mkfifo backpipe && nc -l 5672 < backpipe | nc realserver 5672 > backpipe), but this results in immediate connection failure which is not (so) susceptible to this problem as the exchangeDeclares are rejected before blocking. I wonder if anyone has a method for simulating connection timeouts?</div><div><br></div><div>Very best, Dan.</div></body></html>