You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2011/02/20 13:26:03 UTC

svn commit: r1072574 - in /cayenne/main/trunk/framework: cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/spi/ cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/

Author: aadamchik
Date: Sun Feb 20 12:26:03 2011
New Revision: 1072574

URL: http://svn.apache.org/viewvc?rev=1072574&view=rev
Log:
CAY-1542 DI container is not shutting down Cayenne-managed connection pool

removing shutdown code from DataNode - DI should take care of it
other refactoring

Modified:
    cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/spi/DefaultScopeProvider.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java

Modified: cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/spi/DefaultScopeProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/spi/DefaultScopeProvider.java?rev=1072574&r1=1072573&r2=1072574&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/spi/DefaultScopeProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/spi/DefaultScopeProvider.java Sun Feb 20 12:26:03 2011
@@ -22,7 +22,7 @@ import org.apache.cayenne.ConfigurationE
 import org.apache.cayenne.di.Provider;
 
 /**
- * A provider that provides scoping for other provoders.
+ * A provider that provides scoping for other providers.
  * 
  * @since 3.1
  */

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java?rev=1072574&r1=1072573&r2=1072574&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java Sun Feb 20 12:26:03 2011
@@ -651,15 +651,7 @@ public class DataDomain implements Query
     public void shutdown() {
         if (!stopped) {
             if (sharedSnapshotCache != null) {
-                this.sharedSnapshotCache.shutdown();
-            }
-
-            for (DataNode node : getDataNodes()) {
-                try {
-                    node.shutdown();
-                }
-                catch (Exception ex) {
-                }
+                sharedSnapshotCache.shutdown();
             }
 
             stopped = true;

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java?rev=1072574&r1=1072573&r2=1072574&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java Sun Feb 20 12:26:03 2011
@@ -32,7 +32,6 @@ import javax.sql.DataSource;
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.dbsync.SchemaUpdateStrategy;
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
-import org.apache.cayenne.conn.PoolManager;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
@@ -167,7 +166,7 @@ public class DataNode implements QueryEn
     public void removeDataMap(DataMap map) {
         removeDataMap(map.getName());
     }
-  
+
     public void removeDataMap(String mapName) {
         dataMaps.remove(mapName);
     }
@@ -298,20 +297,11 @@ public class DataNode implements QueryEn
     }
 
     /**
-     * Tries to close JDBC connections opened by this node's data source.
+     * @deprecated since 3.1 does nothing as pool shutdown is performed by the DI
+     *             container.
      */
-    public synchronized void shutdown() {
-        try {
-            // TODO: theoretically someone maybe using our PoolManager as a container
-            // mapped DataSource, so we should use some other logic to determine whether
-            // this is a DataNode-managed DS.
-            if (dataSource instanceof PoolManager) {
-                ((PoolManager) dataSource).dispose();
-                dataSource = null;
-            }
-        }
-        catch (SQLException ex) {
-        }
+    public void shutdown() {
+        // noop
     }
 
     // a read-through DataSource that ensures returning the same connection within

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java?rev=1072574&r1=1072573&r2=1072574&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java Sun Feb 20 12:26:03 2011
@@ -35,7 +35,6 @@ import javax.sql.PooledConnection;
 /**
  * PoolManager is a pooling DataSource impementation. Internally to obtain connections
  * PoolManager uses either a JDBC driver or another pooling datasource.
- * 
  */
 public class PoolManager implements DataSource, ConnectionEventListener {
 
@@ -168,8 +167,22 @@ public class PoolManager implements Data
         return connection;
     }
 
-    /** Closes all existing connections, removes them from the pool. */
+    /**
+     * Closes all existing connections, removes them from the pool.
+     * 
+     * @deprecated since 3.1 replaced with {@link #shutdown()} method for naming
+     *             consistency.
+     */
     public void dispose() throws SQLException {
+        shutdown();
+    }
+
+    /**
+     * Closes all existing connections, drains the pool and stops the maintenance thread.
+     * 
+     * @since 3.1
+     */
+    public void shutdown() throws SQLException {
         synchronized (this) {
             // clean connections from the pool
             ListIterator<PooledConnection> unusedIterator = unusedPool.listIterator();
@@ -199,7 +212,8 @@ public class PoolManager implements Data
 
     protected void disposeOfMaintenanceThread() {
         if (poolMaintenanceThread != null) {
-            this.poolMaintenanceThread.dispose();
+            poolMaintenanceThread.shutdown();
+            poolMaintenanceThread = null;
         }
     }
 
@@ -484,8 +498,8 @@ public class PoolManager implements Data
 
     static class PoolMaintenanceThread extends Thread {
 
-        protected boolean shouldDie;
-        protected PoolManager pool;
+        private boolean shouldDie;
+        private PoolManager pool;
 
         PoolMaintenanceThread(PoolManager pool) {
             super.setName("PoolManagerCleanup-" + pool.hashCode());
@@ -531,9 +545,9 @@ public class PoolManager implements Data
         }
 
         /**
-         * Stops the thread.
+         * Stops the maintenance thread.
          */
-        public void dispose() {
+        void shutdown() {
             shouldDie = true;
             interrupt();
         }