From 6419a424b54eb27d02260de5b73ab3214e1fdd9f Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Sun, 12 Sep 2010 12:46:11 +0000 Subject: QPID-2855 : Broker Transport should not block on awaiting session close confirmation git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@996303 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/server/transport/ServerSession.java | 6 ++++++ .../qpid/server/transport/ServerSessionDelegate.java | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'java/broker') diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java index 42ccee3b3f..7393b17243 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java +++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java @@ -336,6 +336,12 @@ public class ServerSession extends Session implements PrincipalHolder, SessionCo } + @Override + protected void awaitClose() + { + // Broker shouldn't block awaiting close - thus do override this method to do nothing + } + public void acknowledge(final Subscription_0_10 sub, final QueueEntry entry) { _transaction.dequeue(entry.getQueue(), entry.getMessage(), 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 73eebec7bc..b4bb6eb0b4 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 @@ -101,11 +101,14 @@ public class ServerSessionDelegate extends SessionDelegate public void command(Session session, Method method) { SecurityManager.setThreadPrincipal(session.getConnection().getAuthorizationID()); - - super.command(session, method); - if (method.isSync()) + + if(!session.isClosing()) { - session.flushProcessed(); + super.command(session, method); + if (method.isSync()) + { + session.flushProcessed(); + } } } @@ -1189,6 +1192,12 @@ public class ServerSessionDelegate extends SessionDelegate ((ServerSession)session).onClose(); } + @Override + public void detached(Session session) + { + closed(session); + } + public Collection getSubscriptions(Session session) { return ((ServerSession)session).getSubscriptions(); -- cgit v1.2.1