Author: ritchiem
Date: Tue Apr 14 14:28:17 2009
New Revision: 764790
URL: http://svn.apache.org/viewvc?rev=764790&view=rev
Log:
QPID-1779 : Update to ensure CACFTest reports failures correctly and resolved
the issue that it was not showing.
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/AMQSession.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/CloseAfterConnectionFailureTest.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=764790&r1=764789&r2=764790&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 Apr 14 14:28:17 2009
@@ -1326,6 +1326,8 @@
// handling sequence
if (cause instanceof IOException || cause instanceof
AMQDisconnectedException)
{
+ // If we have an IOE/AMQDisconnect there is no connection to close
on.
+ _closing.set(false);
closer = !_closed.getAndSet(true);
_protocolHandler.getProtocolSession().notifyError(je);
Modified:
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=764790&r1=764789&r2=764790&view=diff
==============================================================================
---
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
(original)
+++
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
Tue Apr 14 14:28:17 2009
@@ -21,6 +21,7 @@
package org.apache.qpid.client;
import java.io.Serializable;
+import java.io.IOException;
import java.net.URISyntaxException;
import java.text.MessageFormat;
import java.util.ArrayList;
@@ -698,7 +699,11 @@
// Failover failed and ain't coming back. Knife the dispatcher.
_dispatcherThread.interrupt();
}
- }
+
+ }
+
+ //if we don't have an exception then we can perform closing operations
+ _closing.set(e == null);
if (!_closed.getAndSet(true))
{
@@ -3001,4 +3006,27 @@
}
}
}
+
+ /**
+ * Checks if the Session and its parent connection are closed
+ *
+ * @return <tt>true</tt> if this is closed, <tt>false</tt> otherwise.
+ */
+ @Override
+ public boolean isClosed()
+ {
+ return _closed.get() || _connection.isClosed();
+ }
+
+ /**
+ * Checks if the Session and its parent connection are capable of
performing
+ * closing operations
+ *
+ * @return <tt>true</tt> if we are closing, <tt>false</tt> otherwise.
+ */
+ @Override
+ public boolean isClosing()
+ {
+ return _closing.get()|| _connection.isClosing();
+ }
}
Modified:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/CloseAfterConnectionFailureTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/CloseAfterConnectionFailureTest.java?rev=764790&r1=764789&r2=764790&view=diff
==============================================================================
---
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/CloseAfterConnectionFailureTest.java
(original)
+++
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/CloseAfterConnectionFailureTest.java
Tue Apr 14 14:28:17 2009
@@ -42,6 +42,7 @@
Session session;
MessageConsumer consumer;
private CountDownLatch _latch = new CountDownLatch(1);
+ private JMSException _fail;
public void testNoFailover() throws URLSyntaxException,
AMQVMBrokerCreationException,
InterruptedException, JMSException
@@ -63,6 +64,12 @@
//Kill connection
TransportConnection.killAllVMBrokers();
_latch.await();
+
+ if (_fail != null)
+ {
+ _fail.printStackTrace(System.out);
+ fail("Exception thrown:" + _fail.getMessage());
+ }
}
catch (AMQException e)
{
@@ -72,39 +79,43 @@
public void onException(JMSException e)
{
- System.err.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
+ System.out.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
try
{
consumer.close();
}
- catch (JMSException jsme)
+ catch (JMSException jmse)
{
- System.err.println("Consumer close failed with:" +
jsme.getMessage());
+ System.out.println("Consumer close failed with:" +
jmse.getMessage());
+ _fail = jmse;
}
- System.err.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
+ System.out.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
try
{
//Note that if we actually do session.close() we will lock up as
the session will never receive a frame
// from the
- ((AMQSession)session).close(10);
+ ((AMQSession) session).close(10);
}
- catch (JMSException jsme)
+ catch (JMSException jmse)
{
- System.err.println("Session close failed with:" +
jsme.getMessage());
+ System.out.println("Session close failed with:" +
jmse.getMessage());
+ _fail = jmse;
}
- System.err.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
+ System.out.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
try
{
connection.close();
}
- catch (JMSException jsme)
+ catch (JMSException jmse)
{
- System.err.println("Session close failed with:" +
jsme.getMessage());
+ System.out.println("Session close failed with:" +
jmse.getMessage());
+ _fail = jmse;
}
- System.err.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
+ System.out.println("Connection isClosed after connection Falure?:" +
connection.isClosed());
_latch.countDown();
+
}
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]