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 2015/02/10 12:58:58 UTC
svn commit: r1658689 - in /qpid/trunk/qpid/java/client/src:
main/java/org/apache/qpid/client/AMQConnection.java
main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
test/java/org/apache/qpid/client/MockAMQConnection.java
Author: rgodfrey
Date: Tue Feb 10 11:58:57 2015
New Revision: 1658689
URL: http://svn.apache.org/r1658689
Log:
QPID-6374 : Always call exception listener from connection task pool, rather than from within the failover mutex
Modified:
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MockAMQConnection.java
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java?rev=1658689&r1=1658688&r2=1658689&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java Tue Feb 10 11:58:57 2015
@@ -1349,16 +1349,25 @@ public class AMQConnection extends Close
private void deliverJMSExceptionToExceptionListenerOrLog(final JMSException je, final Throwable cause)
{
- // deliver the exception if there is a listener
- ExceptionListener exceptionListener = getExceptionListenerNoCheck();
+ final ExceptionListener exceptionListener = getExceptionListenerNoCheck();
if (exceptionListener != null)
{
- exceptionListener.onException(je);
+ performConnectionTask(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ // deliver the exception if there is a listener
+ exceptionListener.onException(je);
+ }
+ });
}
else
{
_logger.error("Throwable Received but no listener set: " + cause);
}
+
+
}
private boolean hardError(Throwable cause)
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java?rev=1658689&r1=1658688&r2=1658689&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java Tue Feb 10 11:58:57 2015
@@ -291,7 +291,7 @@ public class AMQConnectionDelegate_0_10
public void closed(Connection conn)
{
- ConnectionException exc = exception;
+ final ConnectionException exc = exception;
exception = null;
if (exc == null)
@@ -299,7 +299,7 @@ public class AMQConnectionDelegate_0_10
return;
}
- ConnectionClose close = exc.getClose();
+ final ConnectionClose close = exc.getClose();
if (close == null || close.getReplyCode() == ConnectionCloseCode.CONNECTION_FORCED)
{
_conn.getProtocolHandler().setFailoverLatch(new CountDownLatch(1));
@@ -332,23 +332,31 @@ public class AMQConnectionDelegate_0_10
_conn.setClosed();
- ExceptionListener listener = _conn.getExceptionListenerNoCheck();
+ final ExceptionListener listener = _conn.getExceptionListenerNoCheck();
if (listener == null)
{
_logger.error("connection exception: " + conn, exc);
}
else
{
- String code = null;
- if (close != null)
+ _conn.performConnectionTask(new Runnable()
{
- code = close.getReplyCode().toString();
- }
+ @Override
+ public void run()
+ {
+ String code = null;
+ if (close != null)
+ {
+ code = close.getReplyCode().toString();
+ }
+
+ JMSException ex = new JMSException(exc.getMessage(), code);
+ ex.setLinkedException(exc);
+ ex.initCause(exc);
+ listener.onException(ex);
+ }
+ });
- JMSException ex = new JMSException(exc.getMessage(), code);
- ex.setLinkedException(exc);
- ex.initCause(exc);
- listener.onException(ex);
}
}
Modified: qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MockAMQConnection.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MockAMQConnection.java?rev=1658689&r1=1658688&r2=1658689&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MockAMQConnection.java (original)
+++ qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MockAMQConnection.java Tue Feb 10 11:58:57 2015
@@ -20,14 +20,14 @@
*/
package org.apache.qpid.client;
+import java.io.IOException;
+
import org.apache.qpid.AMQException;
import org.apache.qpid.client.state.AMQState;
import org.apache.qpid.framing.ProtocolVersion;
import org.apache.qpid.jms.BrokerDetails;
import org.apache.qpid.url.URLSyntaxException;
-import java.io.IOException;
-
public class MockAMQConnection extends AMQConnection
{
public MockAMQConnection(String broker, String username, String password, String clientName, String virtualHost)
@@ -60,4 +60,10 @@ public class MockAMQConnection extends A
{
return super.getDelegate();
}
+
+ @Override
+ public void performConnectionTask(final Runnable task)
+ {
+ task.run();
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org