Author: jstrachan
Date: Fri Jun 16 06:31:53 2006
New Revision: 414823

URL: http://svn.apache.org/viewvc?rev=414823&view=rev
Log:
added patch to handle timeout exceptions gracefully

Modified:
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/FutureResponse.java

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/FutureResponse.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/FutureResponse.java?rev=414823&r1=414822&r2=414823&view=diff
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/FutureResponse.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/FutureResponse.java
 Fri Jun 16 06:31:53 2006
@@ -20,11 +20,14 @@
 import java.io.InterruptedIOException;
 
 import org.apache.activemq.command.Response;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue;
 import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
 
 public class FutureResponse {
+    private static final Log log = LogFactory.getLog(FutureResponse.class);
            
     private final ResponseCallback responseCallback;
     private final ArrayBlockingQueue responseSlot = new ArrayBlockingQueue(1);
@@ -34,10 +37,17 @@
     }
 
     public Response getResult() throws IOException {
-        try {
-            return (Response) responseSlot.take();
-        } catch (InterruptedException e) {
-            throw new InterruptedIOException("Interrupted.");
+        while (true) {
+            try {
+                return (Response) responseSlot.take();
+            }
+            catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                if (log.isDebugEnabled()) {
+                    log.debug("Operation interupted: " + e, e);
+                }
+                // throw new InterruptedIOException("Interrupted.");
+            }
         }
     }
     


Reply via email to