Author: mreutegg
Date: Thu Jul 11 08:22:51 2019
New Revision: 1862909
URL: http://svn.apache.org/viewvc?rev=1862909&view=rev
Log:
OAK-8473: oak-run recovery fails with custom blob store
Modified:
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/run/RecoveryCommandTest.java
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=1862909&r1=1862908&r2=1862909&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
Thu Jul 11 08:22:51 2019
@@ -35,6 +35,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.document.util.MapDBMapFactory;
import org.apache.jackrabbit.oak.plugins.document.util.MapFactory;
import org.apache.jackrabbit.oak.run.commons.Command;
+import org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore;
import com.google.common.io.Closer;
@@ -54,6 +55,16 @@ class RecoveryCommand implements Command
System.exit(1);
}
+ // The recovery command does not have options for the blob store
+ // and the DocumentNodeStoreBuilder by default assumes the blobs
+ // are stored in the same location as the documents. That is,
+ // either in MongoDB or RDB, which is not necessarily the case and
+ // can cause an exception when the blob store implementation starts
+ // read-only on a database that does not have the required
+ // collection. Use an in-memory blob store instead, because the
+ // recovery command does not read blobs anyway.
+ builder.setBlobStore(new MemoryBlobStore());
+
// dryRun implies readonly repo
boolean dryRun = Arrays.asList(args).contains("dryRun");
if (dryRun) {
Modified:
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RecoveryCommandTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RecoveryCommandTest.java?rev=1862909&r1=1862908&r2=1862909&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RecoveryCommandTest.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/RecoveryCommandTest.java
Thu Jul 11 08:22:51 2019
@@ -24,14 +24,12 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore;
import org.junit.Before;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assume.assumeTrue;
-@Ignore("OAK-8473")
public class RecoveryCommandTest {
@Rule