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