[jboss-remoting-commits] JBoss Remoting SVN: r4421 - remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Mon Jul 21 14:36:32 EDT 2008


Author: david.lloyd at jboss.com
Date: 2008-07-21 14:36:32 -0400 (Mon, 21 Jul 2008)
New Revision: 4421

Modified:
   remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java
Log:
Run handlers in separate thread to prevent a deadlock

Modified: remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java
===================================================================
--- remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java	2008-07-21 18:36:10 UTC (rev 4420)
+++ remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java	2008-07-21 18:36:32 UTC (rev 4421)
@@ -679,14 +679,22 @@
                     registerWriter(channel, new SimpleWriteHandler(allocator, bufferList));
                 } catch (InterruptedException e) {
                     Thread.currentThread().interrupt();
-                    SpiUtils.safeHandleCancellation(handler);
+                    executor.execute(new Runnable() {
+                        public void run() {
+                            SpiUtils.safeHandleCancellation(handler);
+                        }
+                    });
                     return SpiUtils.getBlankRemoteRequestContext();
                 }
                 log.trace("Sent request %s", request);
                 return new RemoteRequestContextImpl(id, allocator, channel);
-            } catch (Throwable t) {
+            } catch (final Throwable t) {
                 log.trace(t, "receiveRequest failed with an exception");
-                SpiUtils.safeHandleException(handler, "Failed to build request", t);
+                executor.execute(new Runnable() {
+                    public void run() {
+                        SpiUtils.safeHandleException(handler, "Failed to build request", t);
+                    }
+                });
                 return SpiUtils.getBlankRemoteRequestContext();
             }
         }




More information about the jboss-remoting-commits mailing list