[jboss-cvs] JBoss Messaging SVN: r7224 - in trunk: src/main/org/jboss/messaging/core/client/impl and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jun 5 09:06:03 EDT 2009


Author: timfox
Date: 2009-06-05 09:06:03 -0400 (Fri, 05 Jun 2009)
New Revision: 7224

Modified:
   trunk/build-messaging.xml
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
Log:
gc on factory

Modified: trunk/build-messaging.xml
===================================================================
--- trunk/build-messaging.xml	2009-06-05 12:38:17 UTC (rev 7223)
+++ trunk/build-messaging.xml	2009-06-05 13:06:03 UTC (rev 7224)
@@ -1092,7 +1092,7 @@
 
    <target name="integration-tests" depends="jar, compile-unit-tests">
       <antcall inheritall="true" inheritrefs="true" target="tests">
-         <param name="tests.param" value="**/org/jboss/messaging/tests/integration/**/String64*.class"/>
+         <param name="tests.param" value="**/org/jboss/messaging/tests/integration/**/*${test-mask}.class"/>
       </antcall>
    </target>
 

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java	2009-06-05 12:38:17 UTC (rev 7223)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionFactoryImpl.java	2009-06-05 13:06:03 UTC (rev 7224)
@@ -111,7 +111,7 @@
 
    // Attributes
    // -----------------------------------------------------------------------------------
-  
+
    private final Map<Pair<TransportConfiguration, TransportConfiguration>, ConnectionManager> connectionManagerMap = new LinkedHashMap<Pair<TransportConfiguration, TransportConfiguration>, ConnectionManager>();
 
    private volatile boolean receivedBroadcast = false;
@@ -137,7 +137,7 @@
    private int discoveryPort;
 
    private long discoveryRefreshTimeout;
-   
+
    private long discoveryInitialWaitTimeout;
 
    private long clientFailureCheckPeriod;
@@ -183,9 +183,9 @@
    private double retryIntervalMultiplier;
 
    private int reconnectAttempts;
-   
+
    private volatile boolean closed;
-   
+
    private boolean failoverOnServerShutdown;
 
    private static ExecutorService globalThreadPool;
@@ -268,7 +268,8 @@
       {
          for (Pair<TransportConfiguration, TransportConfiguration> pair : staticConnectors)
          {
-            ConnectionManager cm = new ConnectionManagerImpl(pair.a,
+            ConnectionManager cm = new ConnectionManagerImpl(this,
+                                                             pair.a,
                                                              pair.b,
                                                              failoverOnServerShutdown,
                                                              maxConnections,
@@ -710,25 +711,31 @@
                                    preAcknowledge,
                                    ackBatchSize);
    }
-   
+
    public ClientSession createXASession() throws MessagingException
    {
       return createSessionInternal(null, null, true, false, false, preAcknowledge, this.ackBatchSize);
    }
-   
+
    public ClientSession createTransactedSession() throws MessagingException
    {
       return createSessionInternal(null, null, false, false, false, preAcknowledge, this.ackBatchSize);
    }
-   
+
    public ClientSession createSession() throws MessagingException
    {
       return createSessionInternal(null, null, false, true, true, preAcknowledge, this.ackBatchSize);
    }
-   
+
    public ClientSession createSession(final boolean autoCommitSends, final boolean autoCommitAcks) throws MessagingException
    {
-      return createSessionInternal(null, null, false, autoCommitSends, autoCommitAcks, preAcknowledge, this.ackBatchSize);
+      return createSessionInternal(null,
+                                   null,
+                                   false,
+                                   autoCommitSends,
+                                   autoCommitAcks,
+                                   preAcknowledge,
+                                   this.ackBatchSize);
    }
 
    public ClientSession createSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks) throws MessagingException
@@ -774,7 +781,7 @@
       {
          return;
       }
-      
+
       if (discoveryGroup != null)
       {
          try
@@ -822,10 +829,10 @@
          {
          }
       }
-      
+
       closed = true;
    }
-   
+
    // DiscoveryListener implementation --------------------------------------------------------
 
    public synchronized void connectorsChanged()
@@ -861,7 +868,8 @@
          {
             // Create a new ConnectionManager
 
-            ConnectionManager connectionManager = new ConnectionManagerImpl(connectorPair.a,
+            ConnectionManager connectionManager = new ConnectionManagerImpl(this,
+                                                                            connectorPair.a,
                                                                             connectorPair.b,
                                                                             failoverOnServerShutdown,
                                                                             maxConnections,
@@ -880,20 +888,20 @@
 
       updateConnectionManagerArray();
    }
-   
+
    public ConnectionManager[] getConnectionManagers()
    {
       return connectionManagerArray;
    }
-   
+
    // Protected ------------------------------------------------------------------------------
 
    @Override
    protected void finalize() throws Throwable
    {
-      //In case user forgets to close it explicitly
+      // In case user forgets to close it explicitly
       close();
-      
+
       super.finalize();
    }
 
@@ -919,7 +927,7 @@
       {
          throw new IllegalStateException("Cannot create session, factory is closed (maybe it has been garbage collected)");
       }
-      
+
       if (!readOnly)
       {
          try
@@ -951,22 +959,24 @@
 
          ConnectionManager connectionManager = connectionManagerArray[pos];
 
-         return connectionManager.createSession(username,
-                                                password,
-                                                xa,
-                                                autoCommitSends,
-                                                autoCommitAcks,
-                                                preAcknowledge,
-                                                ackBatchSize,
-                                                minLargeMessageSize,
-                                                blockOnAcknowledge,
-                                                autoGroup,
-                                                producerWindowSize,
-                                                consumerWindowSize,
-                                                producerMaxRate,
-                                                consumerMaxRate,
-                                                blockOnNonPersistentSend,
-                                                blockOnPersistentSend);
+         ClientSession session = connectionManager.createSession(username,
+                                                                 password,
+                                                                 xa,
+                                                                 autoCommitSends,
+                                                                 autoCommitAcks,
+                                                                 preAcknowledge,
+                                                                 ackBatchSize,
+                                                                 minLargeMessageSize,
+                                                                 blockOnAcknowledge,
+                                                                 autoGroup,
+                                                                 producerWindowSize,
+                                                                 consumerWindowSize,
+                                                                 producerMaxRate,
+                                                                 consumerMaxRate,
+                                                                 blockOnNonPersistentSend,
+                                                                 blockOnPersistentSend);
+
+         return session;
       }
    }
 

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java	2009-06-05 12:38:17 UTC (rev 7223)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java	2009-06-05 13:06:03 UTC (rev 7224)
@@ -42,6 +42,7 @@
 import java.util.concurrent.locks.Lock;
 
 import org.jboss.messaging.core.client.ClientSession;
+import org.jboss.messaging.core.client.ClientSessionFactory;
 import org.jboss.messaging.core.config.TransportConfiguration;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
@@ -89,6 +90,9 @@
    // Attributes
    // -----------------------------------------------------------------------------------
 
+   //We need to keep the reference to prevent the factory getting gc'd before the sessions are finished being used
+   private final ClientSessionFactory factory;
+      
    private final TransportConfiguration connectorConfig;
 
    private final TransportConfiguration backupConfig;
@@ -170,7 +174,8 @@
    // Constructors
    // ---------------------------------------------------------------------------------
 
-   public ConnectionManagerImpl(final TransportConfiguration connectorConfig,
+   public ConnectionManagerImpl(final ClientSessionFactory factory,
+                                final TransportConfiguration connectorConfig,
                                 final TransportConfiguration backupConfig,
                                 final boolean failoverOnServerShutdown,
                                 final int maxConnections,
@@ -183,6 +188,8 @@
                                 final ExecutorService threadPool,
                                 final ScheduledExecutorService scheduledThreadPool)
    {
+      this.factory = factory;
+      
       this.connectorConfig = connectorConfig;
 
       this.backupConfig = backupConfig;
@@ -476,14 +483,14 @@
       pinger.close();
    }
    
-//   @Override
-//   protected void finalize() throws Throwable
-//   {
-//      //In case user forgets to close it explicitly
-//      close();
-//      
-//      super.finalize();
-//   }
+   @Override
+   protected void finalize() throws Throwable
+   {
+      //In case user forgets to close it explicitly
+      close();
+      
+      super.finalize();
+   }
 
    // Protected
    // ------------------------------------------------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2009-06-05 12:38:17 UTC (rev 7223)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2009-06-05 13:06:03 UTC (rev 7224)
@@ -334,7 +334,7 @@
 
          replicatingConnection = null;
          replicatingChannel = null;
-         
+
          replicatingConnectionManager.close();
       }
 
@@ -353,6 +353,7 @@
       threadPool.shutdown();
       try
       {
+         log.info("*** waiting for pool to terminate");
          if (!threadPool.awaitTermination(30000, TimeUnit.MILLISECONDS))
          {
             log.warn("Timed out waiting for pool to terminate");
@@ -1042,7 +1043,8 @@
          }
          else
          {
-            replicatingConnectionManager = new ConnectionManagerImpl(backupConnector,
+            replicatingConnectionManager = new ConnectionManagerImpl(null,
+                                                                     backupConnector,
                                                                      null,
                                                                      false,
                                                                      1,
@@ -1097,12 +1099,12 @@
             {
                log.warn("Backup server MUST be started before live server. Initialisation will proceed.");
 
-               return false; 
+               return false;
             }
          }
       }
 
-      return true;      
+      return true;
    }
 
    private void loadJournal() throws Exception




More information about the jboss-cvs-commits mailing list