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]

Reply via email to