Author: reschke
Date: Tue Sep 17 14:32:40 2019
New Revision: 1867061

URL: http://svn.apache.org/viewvc?rev=1867061&view=rev
Log:
OAK-8624: oak-run: tests leak mapd temp files

Modified:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
    
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactoryTest.java

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java?rev=1867061&r1=1867060&r2=1867061&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
 Tue Sep 17 14:32:40 2019
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.util;
 
+import java.io.Closeable;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
@@ -35,7 +36,7 @@ import org.mapdb.Serializer;
 /**
  * A MapFactory backed by MapDB, which stores the map in a temporary file.
  */
-public class MapDBMapFactory extends MapFactory {
+public class MapDBMapFactory extends MapFactory implements Closeable {
 
     private final AtomicInteger counter = new AtomicInteger();
     private final DB db;
@@ -57,6 +58,12 @@ public class MapDBMapFactory extends Map
                 .make();
     }
 
+
+    @Override
+    public void close() throws IOException {
+        this.db.close();
+    }
+
     private static class PathSerializer
             extends BTreeKeySerializer<Path>
             implements Serializable {

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java?rev=1867061&r1=1867060&r2=1867061&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
 Tue Sep 17 14:32:40 2019
@@ -41,10 +41,14 @@ import com.google.common.io.Closer;
 
 class RecoveryCommand implements Command {
 
+    MapFactory oldf = MapFactory.getInstance();
+
     @Override
     public void execute(String... args) throws Exception {
-        MapFactory.setInstance(new MapDBMapFactory());
         Closer closer = Utils.createCloserWithShutdownHook();
+        MapDBMapFactory mdbmf = new MapDBMapFactory();
+        closer.register(mdbmf);
+        MapFactory.setInstance(mdbmf);
         String h = "recovery mongodb://host:port/database|jdbc:... { dryRun }";
 
         try {
@@ -123,6 +127,7 @@ class RecoveryCommand implements Command
             throw closer.rethrow(e);
         } finally {
             closer.close();
+            MapFactory.setInstance(oldf);
         }
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactoryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactoryTest.java?rev=1867061&r1=1867060&r2=1867061&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactoryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactoryTest.java
 Tue Sep 17 14:32:40 2019
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.util;
 
+import java.io.IOException;
 import java.util.concurrent.ConcurrentMap;
 
 import org.apache.jackrabbit.oak.plugins.document.Path;
@@ -27,16 +28,15 @@ import static org.junit.Assert.assertEqu
 public class MapDBMapFactoryTest {
 
     @Test
-    public void mapDB() {
-        ConcurrentMap<Path, Revision> map = new MapDBMapFactory().create();
-        for (int i = 0; i < 10000; i++) {
-            map.put(Path.fromString("/some/test/path/node-" + i), new 
Revision(i, 0, 1));
-        }
-        for (int i = 0; i < 10000; i++) {
-            assertEquals(
-                    new Revision(i, 0, 1),
-                    map.get(Path.fromString("/some/test/path/node-" + i))
-            );
+    public void mapDB() throws IOException {
+        try (MapDBMapFactory dbf = new MapDBMapFactory()) {
+            ConcurrentMap<Path, Revision> map = dbf.create();
+            for (int i = 0; i < 10000; i++) {
+                map.put(Path.fromString("/some/test/path/node-" + i), new 
Revision(i, 0, 1));
+            }
+            for (int i = 0; i < 10000; i++) {
+                assertEquals(new Revision(i, 0, 1), 
map.get(Path.fromString("/some/test/path/node-" + i)));
+            }
         }
     }
 }


Reply via email to