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 al...@apache.org on 2015/08/28 14:55:45 UTC

svn commit: r1698326 - /jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java

Author: alexparvulescu
Date: Fri Aug 28 12:55:45 2015
New Revision: 1698326

URL: http://svn.apache.org/r1698326
Log:
OAK-3301 AbstractRepositoryUpgrade leaks Repository instances
 - patch provided by Robert Munteanu

Modified:
    jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java

Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java?rev=1698326&r1=1698325&r2=1698326&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java Fri Aug 28 12:55:45 2015
@@ -31,6 +31,7 @@ import javax.jcr.SimpleCredentials;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.jackrabbit.api.JackrabbitRepository;
 import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
@@ -39,6 +40,7 @@ import org.apache.jackrabbit.oak.jcr.Jcr
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.stats.Clock;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
 
@@ -53,6 +55,8 @@ public abstract class AbstractRepository
 
     private static File testDirectory;
 
+    private JackrabbitRepository targetRepository;
+
     @BeforeClass
     public static void init() throws InterruptedException {
         // ensure that we create a new repository for the next test
@@ -91,6 +95,14 @@ public abstract class AbstractRepository
         }
     }
 
+    @After
+    public synchronized void shutdownTargetRepository() {
+        if (targetRepository != null) {
+            targetRepository.shutdown();
+            targetRepository = null;
+        }
+    }
+
     protected synchronized NodeStore getTargetNodeStore() {
         if (targetNodeStore == null) {
             targetNodeStore = createTargetNodeStore();
@@ -126,8 +138,12 @@ public abstract class AbstractRepository
         return null;
     }
 
-    public Repository getTargetRepository(){
-        return new Jcr(new Oak(targetNodeStore)).createRepository();
+    public Repository getTargetRepository() {
+        if (targetRepository == null) {
+            targetRepository = (JackrabbitRepository) new Jcr(new Oak(
+                    targetNodeStore)).createRepository();
+        }
+        return targetRepository;
     }
 
     public JackrabbitSession createAdminSession()throws RepositoryException{