You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/11/02 13:07:23 UTC

svn commit: r1636104 - /qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java

Author: rgodfrey
Date: Sun Nov  2 12:07:23 2014
New Revision: 1636104

URL: http://svn.apache.org/r1636104
Log:
QPID-6205 : [Java Client] 0.8/0.9.x JMS client leaks transport threads and sockets if connection cannot be established to the broker

Modified:
    qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java

Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java?rev=1636104&r1=1636103&r2=1636104&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_8_0.java Sun Nov  2 12:07:23 2014
@@ -20,7 +20,6 @@
  */
 package org.apache.qpid.client;
 
-import java.io.IOException;
 import java.net.ConnectException;
 import java.nio.channels.UnresolvedAddressException;
 import java.text.MessageFormat;
@@ -103,7 +102,7 @@ public class AMQConnectionDelegate_8_0 i
         return _confirmedPublishSupported;
     }
 
-    public ProtocolVersion makeBrokerConnection(BrokerDetails brokerDetail) throws AMQException, IOException
+    public ProtocolVersion makeBrokerConnection(BrokerDetails brokerDetail) throws AMQException
     {
         if (_logger.isDebugEnabled())
         {
@@ -140,29 +139,37 @@ public class AMQConnectionDelegate_8_0 i
         NetworkConnection network = transport.connect(settings, securityLayer.receiver(_conn.getProtocolHandler()),
                                                       _conn.getProtocolHandler());
 
-        _conn.getProtocolHandler().setNetworkConnection(network, securityLayer.sender(network.getSender()));
+        try
+        {
+            _conn.getProtocolHandler().setNetworkConnection(network, securityLayer.sender(network.getSender()));
 
-        StateWaiter waiter = _conn.getProtocolHandler().createWaiter(openOrClosedStates);
-        _conn.getProtocolHandler().init(settings);
+            StateWaiter waiter = _conn.getProtocolHandler().createWaiter(openOrClosedStates);
+            _conn.getProtocolHandler().init(settings);
 
-        // this blocks until the connection has been set up or when an error
-        // has prevented the connection being set up
+            // this blocks until the connection has been set up or when an error
+            // has prevented the connection being set up
 
-        AMQState state = waiter.await();
+            AMQState state = waiter.await();
 
-        if(state == AMQState.CONNECTION_OPEN)
-        {
-            _conn.getFailoverPolicy().attainedConnection();
-            _conn.setConnected(true);
-            _conn.logConnected(network.getLocalAddress(), network.getRemoteAddress());
-            _messageCompressionSupported = checkMessageCompressionSupported();
-            _confirmedPublishSupported = checkConfirmedPublishSupported();
-            _confirmedPublishNonTransactionalSupported = checkConfirmedPublishNonTransactionalSupported();
-            return null;
+            if (state == AMQState.CONNECTION_OPEN)
+            {
+                _conn.getFailoverPolicy().attainedConnection();
+                _conn.setConnected(true);
+                _conn.logConnected(network.getLocalAddress(), network.getRemoteAddress());
+                _messageCompressionSupported = checkMessageCompressionSupported();
+                _confirmedPublishSupported = checkConfirmedPublishSupported();
+                _confirmedPublishNonTransactionalSupported = checkConfirmedPublishNonTransactionalSupported();
+                return null;
+            }
+            else
+            {
+                return _conn.getProtocolHandler().getSuggestedProtocolVersion();
+            }
         }
-        else
+        catch(AMQException | RuntimeException e)
         {
-            return _conn.getProtocolHandler().getSuggestedProtocolVersion();
+            network.close();
+            throw e;
         }
 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org