[jboss-cvs] JBoss Messaging SVN: r7736 - in trunk: src/main/org/jboss/messaging/core/server/cluster/impl and 9 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Aug 15 14:07:24 EDT 2009


Author: timfox
Date: 2009-08-15 14:07:23 -0400 (Sat, 15 Aug 2009)
New Revision: 7736

Added:
   trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionCloseOnGCTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/CloseConnectionOnGCTest.java
Modified:
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
   trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/XATest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/client/FailureDeadlockTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionFactoryTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ActivationTimeoutTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverManagementTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverPreAcknowledgeTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverScheduledMessageTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureListenerOnFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureOnCreateConnectionTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadFailoverSupport.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PagingFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PreserveOrderDuringFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleManualFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/jms/cluster/JMSFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/ExceptionListenerTest.java
   trunk/tests/src/org/jboss/messaging/tests/integration/largemessage/LargeMessageCleanupTest.java
Log:
unclosed connections and sessions will no longer cause leaks

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -911,15 +911,6 @@
 
    // Protected ------------------------------------------------------------------------------
 
-   @Override
-   protected void finalize() throws Throwable
-   {
-      // In case user forgets to close it explicitly
-      close();
-
-      super.finalize();
-   }
-
    // Private --------------------------------------------------------------------------------
 
    private void checkWrite()

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -152,7 +152,7 @@
    private final boolean blockOnPersistentSend;
 
    private final int minLargeMessageSize;
-   
+
    private final boolean cacheLargeMessageClient;
 
    private final Channel channel;
@@ -228,7 +228,7 @@
       this.blockOnNonPersistentSend = blockOnNonPersistentSend;
 
       this.blockOnPersistentSend = blockOnPersistentSend;
-      
+
       this.cacheLargeMessageClient = cacheLargeMessageClient;
 
       this.minLargeMessageSize = minLargeMessageSize;
@@ -556,7 +556,7 @@
 
    public void addFailureListener(final FailureListener listener)
    {
-      connectionManager.addFailureListener(listener);      
+      connectionManager.addFailureListener(listener);
    }
 
    public boolean removeFailureListener(final FailureListener listener)
@@ -571,12 +571,12 @@
 
    // ClientSessionInternal implementation
    // ------------------------------------------------------------
-   
+
    public int getMinLargeMessageSize()
    {
       return minLargeMessageSize;
    }
-   
+
    /**
     * @return the cacheLargeMessageClient
     */
@@ -797,6 +797,11 @@
    {
       channel.returnBlocking();
    }
+   
+   public ConnectionManager getConnectionManager()
+   {
+      return connectionManager;
+   }
 
    // CommandConfirmationHandler implementation ------------------------------------
 
@@ -919,7 +924,7 @@
    {
       checkXA();
 
-      if (!(xares instanceof ClientSessionImpl))
+      if (!(xares instanceof ClientSessionInternal))
       {
          return false;
       }
@@ -929,9 +934,9 @@
          return false;
       }
 
-      ClientSessionImpl other = (ClientSessionImpl)xares;
+      ClientSessionInternal other = (ClientSessionInternal)xares;
 
-      return connectionManager == other.connectionManager;
+      return connectionManager == other.getConnectionManager();
    }
 
    public int prepare(final Xid xid) throws XAException
@@ -1272,7 +1277,7 @@
          channel.close();
       }
 
-      connectionManager.removeSession(this);      
+      connectionManager.removeSession(this);
    }
 
    private void cleanUpChildren() throws Exception

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionInternal.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -59,4 +59,8 @@
    void cleanUp() throws Exception;
 
    void returnBlocking();
+   
+   void setForceNotSameRM(boolean force);
+   
+   ConnectionManager getConnectionManager();
 }

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -372,7 +372,7 @@
 
                   sessionChannel.setHandler(handler);
 
-                  return session;
+                  return new DelegatingSession(session);
                }
             }
             catch (Throwable t)
@@ -425,7 +425,7 @@
       // Should never get here
       throw new IllegalStateException("Oh my God it's full of stars!");
    }
-
+   
    // Must be synchronized to prevent it happening concurrently with failover which can lead to
    // inconsistencies
    public void removeSession(final ClientSessionInternal session)
@@ -435,11 +435,8 @@
       {
          synchronized (failoverLock)
          {
-            if (sessions.remove(session) == null)
-            {
-               throw new IllegalStateException("Cannot find session to remove " + session);
-            }
-
+            sessions.remove(session);
+            
             returnConnection(session.getConnection().getID());
          }
       }
@@ -488,15 +485,6 @@
    // Public
    // ---------------------------------------------------------------------------------------
 
-   @Override
-   protected void finalize() throws Throwable
-   {
-      // In case user forgets to close it explicitly
-      causeExit();
-
-      super.finalize();
-   }
-
    private volatile boolean stopPingingAfterOne;
 
    public void stopPingingAfterOne()
@@ -1037,7 +1025,7 @@
       {
          refCount--;
       }
-
+      
       if (entry != null)
       {
          checkCloseConnections();

Modified: trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -366,7 +366,7 @@
       }
       else
       {
-         return ((ClientSessionImpl)session).getConnection();
+         return ((ClientSessionInternal)session).getConnection();
       }
    }
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -289,6 +289,21 @@
 
       log.info("JBoss Messaging Server version " + getVersion().getFullVersion() + " started");
    }
+   
+   @Override
+   protected void finalize() throws Throwable
+   {
+      if (started)
+      {
+         log.warn("MessagingServer is being finalized and has not been stopped. Please remember to stop the " +
+                  "server before letting it go out of scope");
+         
+         stop();         
+      }
+      
+      super.finalize();
+   }
+    
 
    public synchronized void stop() throws Exception
    {      

Modified: trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -22,6 +22,7 @@
 
 package org.jboss.messaging.jms.client;
 
+import java.lang.ref.WeakReference;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -435,7 +436,9 @@
    {
       if (!closed)
       {
-         log.warn("I'm closing a connection you left open. Please make sure you close all connections explicitly " + "before letting them go out of scope!");
+         log.warn("I'm closing a connection you left open. Please make sure you close all connections explicitly " +
+                  "before letting them go out of scope!");
+         
          close();
       }
    }
@@ -528,28 +531,44 @@
 
    // Inner classes --------------------------------------------------------------------------------
 
-   private class JMSFailureListener implements FailureListener
+   private static class JMSFailureListener implements FailureListener
    {
+      private WeakReference<JBossConnection> connectionRef;
+      
       public synchronized void connectionFailed(final MessagingException me)
       {
          if (me == null)
          {
             return;
          }
-
-         if (exceptionListener != null)
+         
+         JBossConnection conn = connectionRef.get();
+         
+         if (conn != null)
          {
-            final JMSException je = new JMSException(me.toString());
-
-            je.initCause(me);
-
-            new Thread(new Runnable()
+            try
             {
-               public void run()
+               final ExceptionListener exceptionListener = conn.getExceptionListener();
+               
+               if (exceptionListener != null)
                {
-                  exceptionListener.onException(je);
+                  final JMSException je = new JMSException(me.toString());
+      
+                  je.initCause(me);
+      
+                  new Thread(new Runnable()
+                  {
+                     public void run()
+                     {
+                        exceptionListener.onException(je);
+                     }
+                  }).start();
                }
-            }).start();
+            }
+            catch (JMSException e)
+            {
+               log.error("Failed to get exception listener");
+            }
          }
       }
 

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/XATest.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/XATest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/XATest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -46,7 +46,7 @@
 
 import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple;
 
-import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.test.messaging.JBMServerTestCase;
 import org.jboss.tm.TxUtils;
@@ -1111,9 +1111,9 @@
 
          //Create 2 sessions and enlist them
          XASession sess1 = conn.createXASession();
-         ClientSessionImpl res1 = (ClientSessionImpl)sess1.getXAResource();
+         ClientSessionInternal res1 = (ClientSessionInternal)sess1.getXAResource();
          XASession sess2 = conn.createXASession();
-         ClientSessionImpl res2 = (ClientSessionImpl)sess2.getXAResource();
+         ClientSessionInternal res2 = (ClientSessionInternal)sess2.getXAResource();
          res1.setForceNotSameRM(true);
          res2.setForceNotSameRM(true);
 
@@ -1195,9 +1195,9 @@
 
          //Create 2 sessions and enlist them
          XASession sess1 = conn.createXASession();
-         ClientSessionImpl res1 = (ClientSessionImpl)sess1.getXAResource();
+         ClientSessionInternal res1 = (ClientSessionInternal)sess1.getXAResource();
          XASession sess2 = conn.createXASession();
-         ClientSessionImpl res2 = (ClientSessionImpl)sess2.getXAResource();
+         ClientSessionInternal res2 = (ClientSessionInternal)sess2.getXAResource();
 
          Transaction tx = tm.getTransaction();
          tx.enlistResource(res1);
@@ -1355,9 +1355,9 @@
 
          //Create 2 sessions and enlist them
          XASession sess1 = conn.createXASession();
-         ClientSessionImpl res1 = (ClientSessionImpl)sess1.getXAResource();
+         ClientSessionInternal res1 = (ClientSessionInternal)sess1.getXAResource();
          XASession sess2 = conn.createXASession();
-         ClientSessionImpl res2 = (ClientSessionImpl)sess2.getXAResource();
+         ClientSessionInternal res2 = (ClientSessionInternal)sess2.getXAResource();
          res1.setForceNotSameRM(true);
          res2.setForceNotSameRM(true);
 
@@ -1708,9 +1708,9 @@
 
          //Create 2 sessions and enlist them
          XASession sess1 = conn.createXASession();
-         ClientSessionImpl res1 = (ClientSessionImpl)sess1.getXAResource();
+         ClientSessionInternal res1 = (ClientSessionInternal)sess1.getXAResource();
          XASession sess2 = conn.createXASession();
-         ClientSessionImpl res2 = (ClientSessionImpl)sess2.getXAResource();
+         ClientSessionInternal res2 = (ClientSessionInternal)sess2.getXAResource();
          res1.setForceNotSameRM(true);
          res2.setForceNotSameRM(true);
 
@@ -1843,9 +1843,9 @@
 
          //Create 2 sessions and enlist them
          XASession sess1 = conn.createXASession();
-         ClientSessionImpl res1 = (ClientSessionImpl)sess1.getXAResource();
+         ClientSessionInternal res1 = (ClientSessionInternal)sess1.getXAResource();
          XASession sess2 = conn.createXASession();
-         ClientSessionImpl res2 = (ClientSessionImpl)sess2.getXAResource();
+         ClientSessionInternal res2 = (ClientSessionInternal)sess2.getXAResource();
          res1.setForceNotSameRM(true);
          res2.setForceNotSameRM(true);
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/client/FailureDeadlockTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/client/FailureDeadlockTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/client/FailureDeadlockTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -26,7 +26,7 @@
 import javax.jms.JMSException;
 import javax.jms.Session;
 
-import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -110,12 +110,12 @@
          final Connection conn1 = cf1.createConnection();
 
          Session sess1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE);
-         RemotingConnection rc1 = ((ClientSessionImpl)((JBossSession)sess1).getCoreSession()).getConnection();
+         RemotingConnection rc1 = ((ClientSessionInternal)((JBossSession)sess1).getCoreSession()).getConnection();
 
          final Connection conn2 = cf2.createConnection();
 
          Session sess2 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE);
-         RemotingConnection rc2 = ((ClientSessionImpl)((JBossSession)sess2).getCoreSession()).getConnection();
+         RemotingConnection rc2 = ((ClientSessionInternal)((JBossSession)sess2).getCoreSession()).getConnection();
 
          ExceptionListener listener1 = new ExceptionListener()
          {
@@ -179,7 +179,7 @@
          final Connection conn1 = cf1.createConnection();
    
          Session sess1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE);
-         RemotingConnection rc1 = ((ClientSessionImpl)((JBossSession)sess1).getCoreSession()).getConnection();      
+         RemotingConnection rc1 = ((ClientSessionInternal)((JBossSession)sess1).getCoreSession()).getConnection();      
    
          rc1.fail(new MessagingException(MessagingException.NOT_CONNECTED, "blah"));
    

Added: trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionCloseOnGCTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionCloseOnGCTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionCloseOnGCTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -0,0 +1,106 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.messaging.tests.integration.client;
+
+import org.jboss.messaging.core.client.ClientSession;
+import org.jboss.messaging.core.client.ClientSessionFactory;
+import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
+import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.server.MessagingServer;
+import org.jboss.messaging.tests.util.ServiceTestBase;
+import org.jboss.messaging.utils.SimpleString;
+
+public class SessionCloseOnGCTest extends ServiceTestBase
+{
+   private static final Logger log = Logger.getLogger(SessionCloseOnGCTest.class);
+
+   private MessagingServer server;
+
+   private final SimpleString QUEUE = new SimpleString("ConsumerTestQueue");
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+
+      server = createServer(false);
+
+      server.start();
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      server.stop();
+
+      server = null;
+
+      super.tearDown();
+   }
+
+   public void testCloseOneSessionOnGC() throws Exception
+   {
+      ClientSessionFactoryImpl sf = (ClientSessionFactoryImpl)createInVMFactory();
+
+      ClientSession session = sf.createSession(false, true, true);
+      
+      assertEquals(1, server.getRemotingService().getConnections().size());
+      
+      session = null;
+
+      System.gc();
+      System.gc();
+      System.gc();
+      
+      Thread.sleep(2000);
+            
+      assertEquals(0, sf.numSessions());
+      assertEquals(0, sf.numConnections());           
+      assertEquals(0, server.getRemotingService().getConnections().size());
+   }
+   
+   public void testCloseSeveralSessionOnGC() throws Exception
+   {
+      ClientSessionFactoryImpl sf = (ClientSessionFactoryImpl)createInVMFactory();
+
+      ClientSession session1 = sf.createSession(false, true, true);
+      ClientSession session2 = sf.createSession(false, true, true);
+      ClientSession session3 = sf.createSession(false, true, true);
+      
+      assertEquals(3, server.getRemotingService().getConnections().size());
+      
+      session1 = null;
+      session2 = null;
+      session3 = null;
+
+      System.gc();
+      System.gc();
+      System.gc();
+      
+      Thread.sleep(2000);
+            
+      assertEquals(0, sf.numSessions());
+      assertEquals(0, sf.numConnections());           
+      assertEquals(0, server.getRemotingService().getConnections().size());
+   }
+
+}

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionFactoryTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionFactoryTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionFactoryTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -32,9 +32,9 @@
 import java.util.List;
 import java.util.Map;
 
+import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.ClientSessionFactory;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
-import org.jboss.messaging.core.client.impl.ClientSessionImpl;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.cluster.BroadcastGroupConfiguration;
@@ -130,7 +130,7 @@
                              ClientSessionFactoryImpl.DEFAULT_FAILOVER_ON_SERVER_SHUTDOWN);
          try
          {
-            ClientSessionImpl session = (ClientSessionImpl)cf.createSession(false, true, true);
+            ClientSession session = cf.createSession(false, true, true);
             fail("Should throw exception");
          }
          catch (MessagingException e)
@@ -142,7 +142,7 @@
                                                                                                                                this.backupTC);
          staticConnectors.add(pair0);
          cf.setStaticConnectors(staticConnectors);
-         ClientSessionImpl session = (ClientSessionImpl)cf.createSession(false, true, true);
+         ClientSession session = cf.createSession(false, true, true);
          assertNotNull(session);
          session.close();
          testSettersThrowException(cf);
@@ -188,7 +188,7 @@
                              ClientSessionFactoryImpl.DEFAULT_RETRY_INTERVAL_MULTIPLIER,
                              ClientSessionFactoryImpl.DEFAULT_RECONNECT_ATTEMPTS,
                              ClientSessionFactoryImpl.DEFAULT_FAILOVER_ON_SERVER_SHUTDOWN);
-         ClientSessionImpl session = (ClientSessionImpl)cf.createSession(false, true, true);
+         ClientSession session = cf.createSession(false, true, true);
          assertNotNull(session);
          session.close();
          testSettersThrowException(cf);
@@ -239,7 +239,7 @@
                              ClientSessionFactoryImpl.DEFAULT_RETRY_INTERVAL_MULTIPLIER,
                              ClientSessionFactoryImpl.DEFAULT_RECONNECT_ATTEMPTS,
                              ClientSessionFactoryImpl.DEFAULT_FAILOVER_ON_SERVER_SHUTDOWN);
-         ClientSessionImpl session = (ClientSessionImpl)cf.createSession(false, true, true);
+         ClientSession session = cf.createSession(false, true, true);
          assertNotNull(session);
          session.close();
          testSettersThrowException(cf);
@@ -290,7 +290,7 @@
                              ClientSessionFactoryImpl.DEFAULT_RETRY_INTERVAL_MULTIPLIER,
                              ClientSessionFactoryImpl.DEFAULT_RECONNECT_ATTEMPTS,
                              ClientSessionFactoryImpl.DEFAULT_FAILOVER_ON_SERVER_SHUTDOWN);
-         ClientSessionImpl session = (ClientSessionImpl)cf.createSession(false, true, true);
+         ClientSession session = cf.createSession(false, true, true);
          assertNotNull(session);
          session.close();
          testSettersThrowException(cf);
@@ -341,7 +341,7 @@
                              ClientSessionFactoryImpl.DEFAULT_RETRY_INTERVAL_MULTIPLIER,
                              ClientSessionFactoryImpl.DEFAULT_RECONNECT_ATTEMPTS,
                              ClientSessionFactoryImpl.DEFAULT_FAILOVER_ON_SERVER_SHUTDOWN);
-         ClientSessionImpl session = (ClientSessionImpl)cf.createSession(false, true, true);
+         ClientSession session = cf.createSession(false, true, true);
          assertNotNull(session);
          session.close();
          testSettersThrowException(cf);

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/client/SessionTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -21,12 +21,15 @@
  */
 package org.jboss.messaging.tests.integration.client;
 
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 import org.jboss.messaging.core.client.ClientConsumer;
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.client.ClientProducer;
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.ClientSessionFactory;
-import org.jboss.messaging.core.client.impl.ClientSessionImpl;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.remoting.FailureListener;
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
@@ -36,10 +39,6 @@
 import org.jboss.messaging.tests.util.ServiceTestBase;
 import org.jboss.messaging.utils.SimpleString;
 
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
 /**
  * This test covers the API for ClientSession altho XA tests are tested seperately.
  *
@@ -372,7 +371,7 @@
       {
          server.start();
          ClientSessionFactory cf = createInVMFactory();
-         ClientSessionImpl clientSession = (ClientSessionImpl) cf.createSession(false, true, true);
+         ClientSession clientSession = cf.createSession(false, true, true);
          clientSession.createQueue(queueName, queueName, false);
          clientSession.start();
          clientSession.close();
@@ -393,7 +392,7 @@
       {
          server.start();
          ClientSessionFactory cf = createInVMFactory();
-         ClientSessionImpl clientSession = (ClientSessionImpl) cf.createSession(false, true, true);
+         ClientSession clientSession = cf.createSession(false, true, true);
          clientSession.createQueue(queueName, queueName, false);
          clientSession.start();
          clientSession.stop();
@@ -415,7 +414,7 @@
       {
          server.start();
          ClientSessionFactory cf = createInVMFactory();
-         ClientSessionImpl clientSession = (ClientSessionImpl) cf.createSession(false, false, true);
+         ClientSession clientSession = cf.createSession(false, false, true);
          clientSession.createQueue(queueName, queueName, false);
          ClientProducer cp = clientSession.createProducer(queueName);
          cp.send(clientSession.createClientMessage(false));
@@ -450,7 +449,7 @@
       {
          server.start();
          ClientSessionFactory cf = createInVMFactory();
-         ClientSessionImpl clientSession = (ClientSessionImpl) cf.createSession(false, false, true);
+         ClientSession clientSession = cf.createSession(false, false, true);
          clientSession.createQueue(queueName, queueName, false);
          ClientProducer cp = clientSession.createProducer(queueName);
          cp.send(clientSession.createClientMessage(false));
@@ -490,9 +489,9 @@
          ClientSessionFactory cf = createInVMFactory();
          cf.setBlockOnNonPersistentSend(true);
          cf.setBlockOnPersistentSend(true);
-         ClientSessionImpl sendSession = (ClientSessionImpl) cf.createSession(false, true, true);
+         ClientSession sendSession = cf.createSession(false, true, true);
          ClientProducer cp = sendSession.createProducer(queueName);
-         ClientSessionImpl clientSession = (ClientSessionImpl) cf.createSession(false, true, false);
+         ClientSession clientSession = cf.createSession(false, true, false);
          clientSession.createQueue(queueName, queueName, false);
          cp.send(clientSession.createClientMessage(false));
          cp.send(clientSession.createClientMessage(false));
@@ -561,9 +560,9 @@
          ClientSessionFactory cf = createInVMFactory();
          cf.setBlockOnNonPersistentSend(true);
          cf.setBlockOnPersistentSend(true);
-         ClientSessionImpl sendSession = (ClientSessionImpl) cf.createSession(false, true, true);
+         ClientSession sendSession = cf.createSession(false, true, true);
          ClientProducer cp = sendSession.createProducer(queueName);
-         ClientSessionImpl clientSession = (ClientSessionImpl) cf.createSession(false, true, false);
+         ClientSession clientSession = cf.createSession(false, true, false);
          clientSession.createQueue(queueName, queueName, false);
          cp.send(clientSession.createClientMessage(false));
          cp.send(clientSession.createClientMessage(false));

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -107,7 +107,7 @@
 
       System.out.println("VM Exited");
 
-      Thread.sleep(2 * CONNECTION_TTL);
+      Thread.sleep(3 * CONNECTION_TTL);
 
       assertActiveConnections(1);
       // FIXME https://jira.jboss.org/jira/browse/JBMESSAGING-1421

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ActivationTimeoutTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ActivationTimeoutTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ActivationTimeoutTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -32,6 +32,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -122,7 +123,7 @@
 
       long start = System.currentTimeMillis();
 
-      RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+      RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
 
       // Now we fail ONLY the connections on sf1, not on sf2
       conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -158,7 +159,7 @@
 
       session1.close();
 
-      RemotingConnection conn2 = ((ClientSessionImpl)session2).getConnection();
+      RemotingConnection conn2 = ((ClientSessionInternal)session2).getConnection();
 
       conn2.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 
@@ -210,7 +211,7 @@
 
          long start = System.currentTimeMillis();
 
-         RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+         RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
 
          // Now we fail ONLY the connections on sf1, not on sf2
          conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -250,7 +251,7 @@
 
          session1.close();
 
-         RemotingConnection conn2 = ((ClientSessionImpl)session2).getConnection();
+         RemotingConnection conn2 = ((ClientSessionInternal)session2).getConnection();
 
          conn2.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/AutomaticFailoverWithDiscoveryTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -28,6 +28,7 @@
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.RemotingConnection;
@@ -89,7 +90,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn1 = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn1 = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -32,6 +32,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -120,7 +121,7 @@
       
       ClientConsumer consumer1 = session1.createConsumer(ADDRESS);
                  
-      final RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+      final RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
  
       Thread t = new Thread()
       {
@@ -221,7 +222,7 @@
       
       session1.start();
                  
-      RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+      RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
  
       conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));
                               

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverManagementTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverManagementTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverManagementTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -35,6 +35,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.client.management.impl.ManagementHelper;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
@@ -123,7 +124,7 @@
                             
       ClientConsumer consumer1 = session1.createConsumer(replyTo);
                  
-      final RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+      final RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
  
       conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));
       
@@ -224,7 +225,7 @@
          if (i == 0)
          {
             //Fail after receipt but before ack
-            final RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+            final RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
             
             conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));
          }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverPreAcknowledgeTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverPreAcknowledgeTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverPreAcknowledgeTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -31,6 +31,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -98,7 +99,7 @@
       }
       ClientConsumer consumer1 = session1.createConsumer(ADDRESS);
 
-      final RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+      final RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
 
       Thread t = new Thread()
       {

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverScheduledMessageTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverScheduledMessageTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverScheduledMessageTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -32,6 +32,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -123,7 +124,7 @@
       
       ClientConsumer consumer1 = session1.createConsumer(ADDRESS);
                  
-      final RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
+      final RemotingConnection conn1 = ((ClientSessionInternal)session1).getConnection();
  
       Thread t = new Thread()
       {

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureListenerOnFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureListenerOnFailoverTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureListenerOnFailoverTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -33,6 +33,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -124,7 +125,7 @@
 
          if (conn == null)
          {
-            conn = ((ClientSessionImpl)session).getConnection();
+            conn = ((ClientSessionInternal)session).getConnection();
          }
 
          MyListener listener = new MyListener(i);
@@ -187,7 +188,7 @@
 
          if (conn == null)
          {
-            conn = ((ClientSessionImpl)session).getConnection();
+            conn = ((ClientSessionInternal)session).getConnection();
          }
 
          MyListener listener = new MyListener(i);
@@ -238,7 +239,7 @@
 
          if (conn == null)
          {
-            conn = ((ClientSessionImpl)session).getConnection();
+            conn = ((ClientSessionInternal)session).getConnection();
          }
 
          MyListener listener = new MyListener(i);
@@ -287,7 +288,7 @@
 
          if (conn == null)
          {
-            conn = ((ClientSessionImpl)session).getConnection();
+            conn = ((ClientSessionInternal)session).getConnection();
          }
 
          MyListener listener = new MyListener(i);
@@ -344,7 +345,7 @@
 
          if (conn == null)
          {
-            conn = ((ClientSessionImpl)session).getConnection();
+            conn = ((ClientSessionInternal)session).getConnection();
          }
 
          MyListener listener = new MyListener(i);
@@ -378,7 +379,7 @@
 
       ClientSession csession = sf.createSession(false, true, true);
 
-      conn = ((ClientSessionImpl)csession).getConnection();
+      conn = ((ClientSessionInternal)csession).getConnection();
 
       InVMConnector.failOnCreateConnection = true;
       InVMConnector.numberOfFailures = reconnectAttempts - 1;
@@ -397,7 +398,7 @@
 
       csession = sf.createSession(false, true, true);
 
-      conn = ((ClientSessionImpl)csession).getConnection();
+      conn = ((ClientSessionInternal)csession).getConnection();
 
       InVMConnector.failOnCreateConnection = true;
       InVMConnector.numberOfFailures = -1;
@@ -447,7 +448,7 @@
 
          if (conn == null)
          {
-            conn = ((ClientSessionImpl)session).getConnection();
+            conn = ((ClientSessionInternal)session).getConnection();
          }
 
          MyListener listener = new MyListener(i);

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureOnCreateConnectionTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureOnCreateConnectionTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailureOnCreateConnectionTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -29,6 +29,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -156,7 +157,7 @@
 
       ClientConsumer consumer = session.createConsumer(ADDRESS);
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadFailoverSupport.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadFailoverSupport.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadFailoverSupport.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -32,6 +32,7 @@
 import org.jboss.messaging.core.client.ClientSessionFactory;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl;
@@ -257,7 +258,7 @@
       {
          log.info("** Failing connection");
 
-         RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionImpl)session).getConnection();
+         RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionInternal)session).getConnection();
 
          if (failOnCreateConnection)
          {

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PagingFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PagingFailoverTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PagingFailoverTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -32,6 +32,7 @@
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.ClientSessionFactory;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.paging.PagingManager;
@@ -168,7 +169,7 @@
          session = sf1.createSession(null, null, false, true, true, false, 0);
          session.start();
 
-         final RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+         final RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
          assertEquals("GloblSize", pmLive.getTotalMemory(), pmBackup.getTotalMemory());
 
@@ -253,7 +254,7 @@
    
    protected void fail(final ClientSession session) throws Exception
    {
-      RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionImpl)session).getConnection();
+      RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionInternal)session).getConnection();
       System.out.println("Forcing a failure");
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED, "blah"));
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PreserveOrderDuringFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PreserveOrderDuringFailoverTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/PreserveOrderDuringFailoverTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -28,6 +28,7 @@
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.ClientSessionFactory;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.Interceptor;
@@ -81,7 +82,7 @@
 
       ClientSession session = sf.createSession(false, true, true);
 
-      final RemotingConnection conn1 = ((ClientSessionImpl)session).getConnection();
+      final RemotingConnection conn1 = ((ClientSessionInternal)session).getConnection();
 
       session.createQueue(ADDRESS, ADDRESS, null, false);
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -29,6 +29,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -115,7 +116,7 @@
 
          ClientConsumer consumer = session.createConsumer(ADDRESS);
 
-         RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+         RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
          conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 
@@ -190,7 +191,7 @@
 
       InVMConnector.failOnCreateConnection = true;
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       Thread t = new Thread()
       {
@@ -303,9 +304,9 @@
       //We can't use the same connection since RemotingConnectionImpl only allows one fail to be in process
       //at same time
       
-      final RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      final RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
       
-      final RemotingConnection conn2 = ((ClientSessionImpl)session2).getConnection();
+      final RemotingConnection conn2 = ((ClientSessionInternal)session2).getConnection();
       
       assertTrue(conn != conn2);
 
@@ -399,7 +400,7 @@
 
       InVMConnector.failOnCreateConnection = true;
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       // Sleep for longer than max retries so should fail to reconnect
 
@@ -476,7 +477,7 @@
       InVMConnector.failOnCreateConnection = true;
       InVMConnector.numberOfFailures = reconnectAttempts - 1;
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 
@@ -542,7 +543,7 @@
 
       InVMConnector.failOnCreateConnection = true;
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       long start = System.currentTimeMillis();
 
@@ -633,7 +634,7 @@
 
       InVMConnector.failOnCreateConnection = true;
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       long start = System.currentTimeMillis();
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -32,6 +32,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -124,7 +125,7 @@
          }
          ClientConsumer consumer = session.createConsumer(ADDRESS);
 
-         RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+         RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
          conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 
@@ -195,7 +196,7 @@
       }
       ClientConsumer consumer = session.createConsumer(ADDRESS);
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 
@@ -236,7 +237,7 @@
 
          // Now fail again - should reconnect to the backup node
 
-         conn = ((ClientSessionImpl)session).getConnection();
+         conn = ((ClientSessionInternal)session).getConnection();
 
          conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -29,6 +29,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.client.impl.ConnectionManagerImpl;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
@@ -105,7 +106,7 @@
 
       session1 = sf1.createSession(false, true, true);
 
-      final RemotingConnectionImpl conn1 = (RemotingConnectionImpl)((ClientSessionImpl)session1).getConnection();
+      final RemotingConnectionImpl conn1 = (RemotingConnectionImpl)((ClientSessionInternal)session1).getConnection();
 
       ((ConnectionManagerImpl)sf1.getConnectionManagers()[0]).stopPingingAfterOne();
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -37,6 +37,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -158,7 +159,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn1 = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn1 = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       conn1.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -236,7 +237,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -317,7 +318,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -385,7 +386,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -476,7 +477,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -565,7 +566,7 @@
          sessions.add(sess);
       }
 
-      RemotingConnection conn = ((ClientSessionImpl)sessions.get(0)).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)sessions.get(0)).getConnection();
 
       // Simulate failure on connection
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -622,7 +623,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -644,7 +645,7 @@
          message2.acknowledge();
       }
 
-      RemotingConnection conn2 = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn2 = ((ClientSessionInternal)session).getConnection();
 
       final CountDownLatch latch = new CountDownLatch(1);
 
@@ -798,7 +799,7 @@
       sess.createQueue("blah", "blah3", false);
       sess.createQueue("blah", "blah4", false);
 
-      RemotingConnection conn = ((ClientSessionImpl)sess).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)sess).getConnection();
 
       // Simulate failure on connection
       conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
@@ -853,7 +854,7 @@
          producer.send(message);
       }
 
-      RemotingConnection conn1 = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn1 = ((ClientSessionInternal)session).getConnection();
 
       // Simulate failure on connection
       // We fail on the replicating connection and the client connection

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleManualFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleManualFailoverTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleManualFailoverTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -35,6 +35,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -139,7 +140,7 @@
          }
       }
 
-      RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
+      RemotingConnection conn = ((ClientSessionInternal)session).getConnection();
 
       conn.addFailureListener(new MyListener());
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -34,6 +34,7 @@
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryInternal;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -128,7 +129,7 @@
       Thread.sleep(2000);
       
       //Fail client connection      
-      ((ClientSessionImpl)session).getConnection().fail(new MessagingException(MessagingException.NOT_CONNECTED, "simulated failure b/w client and live node"));
+      ((ClientSessionInternal)session).getConnection().fail(new MessagingException(MessagingException.NOT_CONNECTED, "simulated failure b/w client and live node"));
 
       ClientConsumer consumer1 = session.createConsumer(ADDRESS);
 

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/jms/cluster/JMSFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/cluster/JMSFailoverTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/cluster/JMSFailoverTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -36,6 +36,7 @@
 
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
@@ -104,7 +105,7 @@
 
       ClientSession coreSession = ((JBossSession)sess).getCoreSession();
 
-      RemotingConnection coreConn = ((ClientSessionImpl)coreSession).getConnection();
+      RemotingConnection coreConn = ((ClientSessionInternal)coreSession).getConnection();
 
       SimpleString jmsQueueName = new SimpleString(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + "myqueue");
 
@@ -172,7 +173,7 @@
 
       ClientSession coreSessionLive = ((JBossSession)sessLive).getCoreSession();
 
-      RemotingConnection coreConnLive = ((ClientSessionImpl)coreSessionLive).getConnection();
+      RemotingConnection coreConnLive = ((ClientSessionInternal)coreSessionLive).getConnection();
 
       SimpleString jmsQueueName = new SimpleString(JBossQueue.JMS_QUEUE_ADDRESS_PREFIX + "myqueue");
 

Added: trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/CloseConnectionOnGCTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/CloseConnectionOnGCTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/CloseConnectionOnGCTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -0,0 +1,171 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.messaging.tests.integration.jms.connection;
+
+import javax.jms.Connection;
+import javax.jms.Session;
+
+import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
+import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.config.TransportConfiguration;
+import org.jboss.messaging.core.config.impl.ConfigurationImpl;
+import org.jboss.messaging.core.server.Messaging;
+import org.jboss.messaging.core.server.MessagingServer;
+import org.jboss.messaging.jms.client.JBossConnectionFactory;
+import org.jboss.messaging.jms.server.impl.JMSServerManagerImpl;
+import org.jboss.messaging.tests.integration.jms.server.management.NullInitialContext;
+import org.jboss.messaging.tests.util.UnitTestCase;
+
+/**
+ * 
+ * A CloseConnectionOnGCTest
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ *
+ *
+ */
+public class CloseConnectionOnGCTest extends UnitTestCase
+{
+   private MessagingServer server;
+
+   private JMSServerManagerImpl jmsServer;
+
+   private JBossConnectionFactory cf;
+
+   private static final String Q_NAME = "ConnectionTestQueue";
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+      
+      Configuration conf = new ConfigurationImpl();
+      conf.setSecurityEnabled(false);
+      conf.setJMXManagementEnabled(true);
+      conf.getAcceptorConfigurations()
+          .add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory"));
+      server = Messaging.newMessagingServer(conf, false);
+      jmsServer = new JMSServerManagerImpl(server);
+      jmsServer.setContext(new NullInitialContext());
+      jmsServer.start();     
+      jmsServer.createQueue(Q_NAME, Q_NAME, null, true);
+      cf = new JBossConnectionFactory(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));      
+      cf.setBlockOnPersistentSend(true);
+      cf.setPreAcknowledge(true);
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      cf = null;
+      if (server != null && server.isStarted())
+      {
+         try
+         {
+            server.stop();
+         }
+         catch (Exception e)
+         {
+            e.printStackTrace();
+         }
+         server = null;
+
+      }
+      
+      server = null;
+      jmsServer = null;
+      cf = null;
+      
+      super.tearDown();
+   }
+   
+   
+   public void testCloseOneConnectionOnGC() throws Exception
+   {
+      Connection conn = cf.createConnection();
+           
+      assertEquals(1, server.getRemotingService().getConnections().size());
+      
+      conn = null;
+
+      System.gc();
+      System.gc();
+      System.gc();
+      
+      Thread.sleep(2000);
+                  
+      assertEquals(0, server.getRemotingService().getConnections().size());
+   }
+   
+   public void testCloseSeveralConnectionOnGC() throws Exception
+   {
+      Connection conn1 = cf.createConnection();
+      Connection conn2 = cf.createConnection();
+      Connection conn3 = cf.createConnection();     
+      
+      assertEquals(3, server.getRemotingService().getConnections().size());
+      
+      conn1 = null;
+      conn2 = null;
+      conn3 = null;
+
+      System.gc();
+      System.gc();
+      System.gc();
+      
+      Thread.sleep(2000);
+                     
+      assertEquals(0, server.getRemotingService().getConnections().size());
+   }
+   
+   public void testCloseSeveralConnectionsWithSessionsOnGC() throws Exception
+   {
+      Connection conn1 = cf.createConnection();
+      Connection conn2 = cf.createConnection();
+      Connection conn3 = cf.createConnection();    
+      
+      Session sess1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      Session sess2 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      Session sess3 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      Session sess4 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      Session sess5 = conn3.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      Session sess6 = conn3.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      Session sess7 = conn3.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            
+      assertEquals(ClientSessionFactoryImpl.DEFAULT_MAX_CONNECTIONS, server.getRemotingService().getConnections().size());
+      
+      sess1 = sess2 = sess3 = sess4 = sess5 = sess6 = sess7 = null;
+      
+      conn1 = null;
+      conn2 = null;
+      conn3 = null;
+      
+      System.gc();
+      System.gc();
+      System.gc();
+      
+      Thread.sleep(2000);
+                     
+      assertEquals(0, server.getRemotingService().getConnections().size());
+   }
+   
+}

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/ExceptionListenerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/ExceptionListenerTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/connection/ExceptionListenerTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -21,6 +21,8 @@
  */
 package org.jboss.messaging.tests.integration.jms.connection;
 
+import org.jboss.messaging.core.client.ClientSession;
+import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
@@ -162,4 +164,42 @@
       assertEquals(1, listener.numCalls);                  
    }
    
+   public void testCloseOneConnectionOnGC() throws Exception
+   {
+      Connection conn = cf.createConnection();
+           
+      assertEquals(1, server.getRemotingService().getConnections().size());
+      
+      conn = null;
+
+      System.gc();
+      System.gc();
+      System.gc();
+      
+      Thread.sleep(2000);
+                  
+      assertEquals(0, server.getRemotingService().getConnections().size());
+   }
+   
+   public void testCloseSeveralSessionOnGC() throws Exception
+   {
+      Connection conn1 = cf.createConnection();
+      Connection conn2 = cf.createConnection();
+      Connection conn3 = cf.createConnection();     
+      
+      assertEquals(3, server.getRemotingService().getConnections().size());
+      
+      conn1 = null;
+      conn2 = null;
+      conn3 = null;
+
+      System.gc();
+      System.gc();
+      System.gc();
+      
+      Thread.sleep(2000);
+                     
+      assertEquals(0, server.getRemotingService().getConnections().size());
+   }
+   
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/largemessage/LargeMessageCleanupTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/largemessage/LargeMessageCleanupTest.java	2009-08-15 14:55:22 UTC (rev 7735)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/largemessage/LargeMessageCleanupTest.java	2009-08-15 18:07:23 UTC (rev 7736)
@@ -33,6 +33,7 @@
 import org.jboss.messaging.core.client.ClientSessionFactory;
 import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
 import org.jboss.messaging.core.client.impl.ClientSessionImpl;
+import org.jboss.messaging.core.client.impl.ClientSessionInternal;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.exception.MessagingException;
@@ -121,7 +122,7 @@
             log.info("calling cb onwrite** ");
             if (counter.incrementAndGet() == 5)
             {
-               RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionImpl)session).getConnection();
+               RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionInternal)session).getConnection();
                RemotingServiceImpl remotingServiceImpl = (RemotingServiceImpl)server.getRemotingService();
                remotingServiceImpl.connectionException(conn.getID(),
                                                        new MessagingException(MessagingException.NOT_CONNECTED, "blah!"));




More information about the jboss-cvs-commits mailing list