summaryrefslogtreecommitdiff
path: root/java/broker
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2011-08-02 16:37:34 +0000
committerRobert Gemmell <robbie@apache.org>2011-08-02 16:37:34 +0000
commit4cbd109e7a909ba4da2f2a321a1e1655345475da (patch)
tree042a2c88c2a8571e3ded31bfd13bf8adccdbdcdd /java/broker
parent0162322d42698aa2c7b99a82c55a16fcccee38c8 (diff)
downloadqpid-python-4cbd109e7a909ba4da2f2a321a1e1655345475da.tar.gz
QPID-2899: ensure otherwise unhandled exceptions close the Session with an ExecutionException
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1153183 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
index 52d39978f3..5a6a9aa8b1 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
@@ -106,16 +106,23 @@ public class ServerSessionDelegate extends SessionDelegate
@Override
public void command(Session session, Method method)
{
- setThreadSubject(session);
-
- if(!session.isClosing())
+ try
{
- super.command(session, method);
- if (method.isSync())
+ setThreadSubject(session);
+
+ if(!session.isClosing())
{
- session.flushProcessed();
+ super.command(session, method);
+ if (method.isSync())
+ {
+ session.flushProcessed();
+ }
}
}
+ catch(RuntimeException e)
+ {
+ exception(session, method, ExecutionErrorCode.INTERNAL_ERROR, "Exception processing command: " + e);
+ }
}
@Override