diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2014-01-08 18:05:39 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2014-01-08 18:05:39 +0000 |
| commit | bd1a076d29554980db3029217facba858150380c (patch) | |
| tree | 4347eef395685c1fefd632a3398013277a07eebe /java | |
| parent | 2f9414479195ccf5e4fb2fc6adc0b439cf78c38e (diff) | |
| download | qpid-python-bd1a076d29554980db3029217facba858150380c.tar.gz | |
QPID-5453 : [Java Broker] Fix to ensure that exclusive queues are always unlocked when a session is closed
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1556593 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java b/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java index 46626e3e92..a0b60ae640 100644 --- a/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java +++ b/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java @@ -212,10 +212,21 @@ public class ServerSessionDelegate extends SessionDelegate { ServerSession s = (ServerSession) session; queue.setExclusiveOwningSession(s); + + ((ServerSession) session).addSessionCloseTask(new ServerSession.Task() + { + public void doTask(ServerSession session) + { + if(queue.getExclusiveOwningSession() == session) + { + queue.setExclusiveOwningSession(null); + } + } + }); + if(queue.getAuthorizationHolder() == null) { queue.setAuthorizationHolder(s); - queue.setExclusiveOwningSession(s); ((ServerSession) session).addSessionCloseTask(new ServerSession.Task() { public void doTask(ServerSession session) @@ -223,7 +234,6 @@ public class ServerSessionDelegate extends SessionDelegate if(queue.getAuthorizationHolder() == session) { queue.setAuthorizationHolder(null); - queue.setExclusiveOwningSession(null); } } }); |
