Author: kwall
Date: Thu Feb 11 22:04:33 2016
New Revision: 1729904

URL: http://svn.apache.org/viewvc?rev=1729904&view=rev
Log:
QPID-7060: [Java Broker] Close session/connection protocol objects before 
disassociating virtualhost

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

Modified: 
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java?rev=1729904&r1=1729903&r2=1729904&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
 Thu Feb 11 22:04:33 2016
@@ -72,7 +72,7 @@ public class ServerConnection extends Co
     private Principal _authorizedPrincipal = null;
     private final long _connectionId;
     private final Object _reference = new Object();
-    private VirtualHost<?> _virtualHost;
+    private volatile VirtualHost<?> _virtualHost;
     private final AmqpPort<?> _port;
     private final AtomicLong _lastIoTime = new AtomicLong();
     private boolean _blocking;
@@ -418,15 +418,20 @@ public class ServerConnection extends Co
     @Override
     public void closed()
     {
-        performDeleteTasks();
-
-        if(_virtualHost != null)
+        try
         {
-            _virtualHost.deregisterConnection(_amqpConnection);
+            performDeleteTasks();
+            super.closed();
+        }
+        finally
+        {
+            if(_virtualHost != null)
+            {
+                _virtualHost.deregisterConnection(_amqpConnection);
+            }
+            getEventLogger().message(isConnectionLost() ? 
ConnectionMessages.DROPPED_CONNECTION() : ConnectionMessages.CLOSE());
         }
-        super.closed();
 
-        getEventLogger().message(isConnectionLost() ? 
ConnectionMessages.DROPPED_CONNECTION() : ConnectionMessages.CLOSE());
     }
 
     private void markAllSessionsClosed()



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

Reply via email to