Author: reschke
Date: Tue Feb 11 15:47:03 2014
New Revision: 1567188

URL: http://svn.apache.org/r1567188
Log:
OAK-1266 - make sure connections get closed

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1567188&r1=1567187&r2=1567188&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
 Tue Feb 11 15:47:03 2014
@@ -61,6 +61,7 @@ import org.apache.jackrabbit.oak.cache.C
 import org.apache.jackrabbit.oak.cache.CacheValue;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.kernel.BlobSerializer;
+import org.apache.jackrabbit.oak.plugins.document.rdb.RDBBlobStore;
 import 
org.apache.jackrabbit.oak.plugins.document.util.LoggingDocumentStoreWrapper;
 import org.apache.jackrabbit.oak.plugins.document.util.StringValue;
 import 
org.apache.jackrabbit.oak.plugins.document.util.TimingDocumentStoreWrapper;
@@ -351,6 +352,10 @@ public final class DocumentNodeStore
                 clusterNodeInfo.dispose();
             }
             store.dispose();
+            if (blobStore instanceof RDBBlobStore) {
+                // maybe this should be an interface
+                ((RDBBlobStore) blobStore).dispose();
+            }
             LOG.info("Disposed DocumentNodeStore with clusterNodeId: {}", 
clusterId);
         }
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1567188&r1=1567187&r2=1567188&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
 Tue Feb 11 15:47:03 2014
@@ -83,8 +83,17 @@ public class RDBBlobStore extends Abstra
         }
     }
 
+    @Override
+    public void finalize() {
+        if (this.connection != null && this.callStack != null) {
+            LOG.debug("finalizing RDBDocumentStore that was not disposed", 
this.callStack);
+        }
+    }
+
     private static final Logger LOG = 
LoggerFactory.getLogger(RDBBlobStore.class);
 
+    private Exception callStack;
+
     private Connection connection;
 
     private void initialize(Connection con) throws Exception {
@@ -106,6 +115,7 @@ public class RDBBlobStore extends Abstra
         }
 
         this.connection = con;
+        this.callStack = LOG.isDebugEnabled() ? new Exception("call stack of 
RDBBlobStore creation") : null;
     }
 
     private void createTables(Connection con, String binaryType) throws 
SQLException {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1567188&r1=1567187&r2=1567188&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 Tue Feb 11 15:47:03 2014
@@ -170,6 +170,8 @@ public class RDBDocumentStore implements
 
     private final Comparator<Revision> comparator = 
StableRevisionComparator.REVERSE;
 
+    private Exception callStack;
+
     private Connection connection;
 
     private void initialize(Connection con) throws Exception {
@@ -183,6 +185,14 @@ public class RDBDocumentStore implements
         con.commit();
 
         this.connection = con;
+        this.callStack = LOG.isDebugEnabled() ? new Exception("call stack of 
RDBDocumentStore creation") : null;
+    }
+
+    @Override
+    public void finalize() {
+        if (this.connection != null && this.callStack != null) {
+            LOG.debug("finalizing RDBDocumentStore that was not disposed", 
this.callStack);
+        }
     }
 
     @CheckForNull


Reply via email to