summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-01-08 18:05:39 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-01-08 18:05:39 +0000
commitbd1a076d29554980db3029217facba858150380c (patch)
tree4347eef395685c1fefd632a3398013277a07eebe /java
parent2f9414479195ccf5e4fb2fc6adc0b439cf78c38e (diff)
downloadqpid-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.java14
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);
}
}
});