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)));
+ }
}
}
}