You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2015/12/09 11:12:56 UTC

svn commit: r1718801 - in /jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr: OakDocumentRDBRepositoryStub.java OakMongoNSRepositoryStub.java

Author: mreutegg
Date: Wed Dec  9 10:12:55 2015
New Revision: 1718801

URL: http://svn.apache.org/viewvc?rev=1718801&view=rev
Log:
OAK-3754: RepositoryStub does not dispose DocumentStore

Modified:
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java?rev=1718801&r1=1718800&r2=1718801&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java Wed Dec  9 10:12:55 2015
@@ -38,7 +38,7 @@ import org.apache.jackrabbit.oak.query.Q
  */
 public class OakDocumentRDBRepositoryStub extends OakRepositoryStub {
 
-    protected static final String URL = System.getProperty("rdb.jdbc-url", "jdbc:h2:file:./{fname}oaktest");
+    protected static final String URL = System.getProperty("rdb.jdbc-url", "jdbc:h2:file:./{fname}oaktest;DB_CLOSE_ON_EXIT=FALSE");
 
     protected static final String USERNAME = System.getProperty("rdb.jdbc-user", "sa");
 
@@ -61,8 +61,18 @@ public class OakDocumentRDBRepositoryStu
         super(settings);
 
         Session session = null;
+        final DocumentNodeStore m;
         try {
-            this.repository = createRepository(OakDocumentRDBRepositoryStub.jdbcUrl, USERNAME, PASSWD);
+            String prefix = "T" + UUID.randomUUID().toString().replace("-",  "");
+            RDBOptions options = new RDBOptions().tablePrefix(prefix).dropTablesOnClose(true);
+            m = new DocumentMK.Builder().
+                    memoryCacheSize(64 * 1024 * 1024).
+                    setPersistentCache("target/persistentCache,time").
+                    setRDBConnection(RDBDataSourceFactory.forJdbcUrl(jdbcUrl, USERNAME, PASSWD), options).
+                    getNodeStore();
+            QueryEngineSettings qs = new QueryEngineSettings();
+            qs.setFullTextComparisonWithoutIndex(true);
+            this.repository = new Jcr(m).with(qs).createRepository();
             session = getRepository().login(superuser);
             TestContentLoader loader = new TestContentLoader();
             loader.loadTestContent(session);
@@ -73,20 +83,12 @@ public class OakDocumentRDBRepositoryStu
                 session.logout();
             }
         }
-        // Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownHook(connection)));
-    }
-
-    protected Repository createRepository(String url, String username, String password) {
-        String prefix = "T" + UUID.randomUUID().toString().replace("-",  "");
-        RDBOptions options = new RDBOptions().tablePrefix(prefix).dropTablesOnClose(true);
-        DocumentNodeStore m = new DocumentMK.Builder().
-                memoryCacheSize(64 * 1024 * 1024).
-                setPersistentCache("target/persistentCache,time").
-                setRDBConnection(RDBDataSourceFactory.forJdbcUrl(url, username, password), options).
-                getNodeStore();
-        QueryEngineSettings qs = new QueryEngineSettings();
-        qs.setFullTextComparisonWithoutIndex(true);
-        return new Jcr(m).with(qs).createRepository();
+        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
+            @Override
+            public void run() {
+                m.dispose();
+            }
+        }));
     }
 
     public static boolean isAvailable() {

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java?rev=1718801&r1=1718800&r2=1718801&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java Wed Dec  9 10:12:55 2015
@@ -16,7 +16,6 @@
  */
 package org.apache.jackrabbit.oak.jcr;
 
-import java.lang.ref.WeakReference;
 import java.util.Properties;
 
 import javax.jcr.Repository;
@@ -24,6 +23,7 @@ import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
 import com.mongodb.BasicDBObject;
+
 import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
@@ -55,9 +55,17 @@ public class OakMongoNSRepositoryStub ex
     public OakMongoNSRepositoryStub(Properties settings) throws RepositoryException {
         super(settings);
         Session session = null;
+        final DocumentNodeStore store;
         try {
             this.connection = new MongoConnection(HOST, PORT, DB);
-            this.repository = createRepository(connection);
+            store = new DocumentMK.Builder().
+                    memoryCacheSize(64 * 1024 * 1024).
+                    setPersistentCache("target/persistentCache,time").
+                    setMongoDB(connection.getDB()).
+                    getNodeStore();
+            QueryEngineSettings qs = new QueryEngineSettings();
+            qs.setFullTextComparisonWithoutIndex(true);
+            this.repository = new Jcr(store).with(qs).createRepository();
 
             session = getRepository().login(superuser);
             TestContentLoader loader = new TestContentLoader();
@@ -69,39 +77,12 @@ public class OakMongoNSRepositoryStub ex
                 session.logout();
             }
         }
-        Runtime.getRuntime().addShutdownHook(
-                new Thread(new ShutdownHook(connection)));
-    }
-
-    private static Repository createRepository(MongoConnection connection) {
-        DocumentNodeStore store = new DocumentMK.Builder().
-                memoryCacheSize(64 * 1024 * 1024).
-                setPersistentCache("target/persistentCache,time").
-                setMongoDB(connection.getDB()).
-                getNodeStore();
-        QueryEngineSettings qs = new QueryEngineSettings();
-        qs.setFullTextComparisonWithoutIndex(true);
-        return new Jcr(store).with(qs).createRepository();
-    }
-
-    /**
-     * A shutdown hook that closed the MongoDB connection if needed.
-     */
-    private static class ShutdownHook implements Runnable {
-
-        private final WeakReference<MongoConnection> reference;
-
-        public ShutdownHook(MongoConnection connection) {
-            this.reference = new WeakReference<MongoConnection>(connection);
-        }
-
-        @Override
-        public void run() {
-            MongoConnection connection = reference.get();
-            if (connection != null) {
-                connection.close();
+        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
+            @Override
+            public void run() {
+                store.dispose();
             }
-        }
+        }));
     }
 
     public static boolean isMongoDBAvailable() {