Author: rgodfrey
Date: Wed Jan  8 18:05:39 2014
New Revision: 1556593

URL: http://svn.apache.org/r1556593
Log:
QPID-5453 : [Java Broker] Fix to ensure that exclusive queues are always 
unlocked when a session is closed

Modified:
    
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java

Modified: 
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java?rev=1556593&r1=1556592&r2=1556593&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
 Wed Jan  8 18:05:39 2014
@@ -212,10 +212,21 @@ public class ServerSessionDelegate exten
                     {
                         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 exten
                                     if(queue.getAuthorizationHolder() == 
session)
                                     {
                                         queue.setAuthorizationHolder(null);
-                                        queue.setExclusiveOwningSession(null);
                                     }
                                 }
                             });



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to