Author: amitj
Date: Fri Dec  1 07:38:33 2017
New Revision: 1816800

URL: http://svn.apache.org/viewvc?rev=1816800&view=rev
Log:
OAK-6586: [oak-run] Add option to datastorecheck command to report 
misconfigured external binary references

- To check for misconfigured external references --nods option added in the list

Modified:
    jackrabbit/oak/trunk/oak-run/README.md
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
    
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java

Modified: jackrabbit/oak/trunk/oak-run/README.md
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/README.md?rev=1816800&r1=1816799&r2=1816800&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/README.md (original)
+++ jackrabbit/oak/trunk/oak-run/README.md Fri Dec  1 07:38:33 2017
@@ -457,7 +457,7 @@ Use the following command:
 
     $ java -jar oak-run-*.jar datastorecheck [--id] [--ref] [--consistency] \
             [--store <path>|<mongo_uri>] \
-            [--s3ds <s3ds_config>|--fds <fds_config>] \
+            [--s3ds <s3ds_config>|--fds <fds_config>|--nods] \
             [--dump <path>] \
             [--repoHome <local_repository_root>]
             [--track]
@@ -474,6 +474,7 @@ The following options are available:
     --dump           - Path where to dump the files (Optional). Otherwise, 
files will be dumped in the user tmp directory.
     --s3ds           - Path to the S3DataStore configuration file
     --fds            - Path to the FileDataStore configuration file ('path' 
property is mandatory)
+    --nods           - To check for misconfigured external references when no 
data store should be there (Use instead of --s3ds or --fds)
     --repoHome       - Path of the local reposity home folder. Mandatory for 
--consistency & --track options 
     --track          - Whether to force override the tracked ids (Valid only 
for --id & --consistency options)
     --verbose        - Outputs backend friendly blobids. Adds the 
sub-directories created in FDS and the changes done for S3/Azure when stored in 
the respective container.

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java?rev=1816800&r1=1816799&r2=1816800&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
 Fri Dec  1 07:38:33 2017
@@ -94,7 +94,7 @@ public class DataStoreCheckCommand imple
 
         String helpStr =
             "datastorecheck [--id] [--ref] [--consistency] [--store 
<path>|<mongo_uri>] "
-                + "[--s3ds <s3ds_config>|--fds <fds_config>|--azureblobds 
<azureblobds_config>]"
+                + "[--s3ds <s3ds_config>|--fds <fds_config>|--azureblobds 
<azureblobds_config>|--nods]"
                 + " [--dump <path>] [--repoHome <repo_home>] [--track] 
[--verbose]";
 
         Closer closer = Closer.create();

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java?rev=1816800&r1=1816799&r2=1816800&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
 Fri Dec  1 07:38:33 2017
@@ -37,6 +37,7 @@ import javax.annotation.Nullable;
 import javax.jcr.RepositoryException;
 import javax.sql.DataSource;
 
+import joptsimple.OptionSpecBuilder;
 import org.apache.commons.io.FileUtils;
 import org.apache.felix.cm.file.ConfigurationHandler;
 import org.apache.jackrabbit.core.data.DataStore;
@@ -49,6 +50,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
 import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
+import org.apache.jackrabbit.oak.run.cli.DummyDataStore;
 import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
@@ -220,11 +222,12 @@ class Utils {
             parser.accepts("fds", "FileDataStore 
config").withRequiredArg().ofType(String.class);
         ArgumentAcceptingOptionSpec<String> azureBlobDSConfig =
             parser.accepts("azureblobds", "AzureBlobStorageDataStore 
config").withRequiredArg().ofType(String.class);
+        OptionSpecBuilder nods = parser.accepts("nods", "No DataStore ");
 
 
         OptionSet options = parser.parse(args);
 
-        if (!options.has(s3dsConfig) && !options.has(fdsConfig) && 
!options.has(azureBlobDSConfig)) {
+        if (!options.has(s3dsConfig) && !options.has(fdsConfig) && 
!options.has(azureBlobDSConfig) && !options.has(nods)) {
             return null;
         }
 
@@ -247,7 +250,11 @@ class Utils {
             azureds.init(homeDir.getAbsolutePath());
             closer.register(asCloseable(homeDir));
             delegate = azureds;
-        } else {
+        } else if (options.has(nods)){
+            delegate = new DummyDataStore();
+            delegate.init(null);
+        }
+        else {
             delegate = new OakFileDataStore();
             String cfgPath = fdsConfig.value(options);
             Properties props = loadAndTransformProps(cfgPath);

Modified: 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java?rev=1816800&r1=1816799&r2=1816800&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java
 Fri Dec  1 07:38:33 2017
@@ -293,6 +293,16 @@ public class DataStoreCheckTest {
         assertFileEquals(dump, "[consistency]", 
encodedIds(Sets.newHashSet(deletedBlobId), dsOption));
     }
 
+    @Test
+    public void testConsistencyNoDS() throws Exception {
+        File dump = temporaryFolder.newFolder();
+
+        testTarNoDSOption(dump);
+
+        assertFileEquals(dump, "[ref]", blobsAdded);
+        assertFileEquals(dump, "[consistency]", blobsAdded);
+    }
+
     private void testAllParams(File dump, File repoHome) throws Exception {
         DataStoreCheckCommand checkCommand = new DataStoreCheckCommand();
         List<String> argsList = Lists
@@ -322,6 +332,14 @@ public class DataStoreCheckTest {
         testIncorrectParams(argsList, Lists.newArrayList("Missing required 
option(s)", "id", "ref", "consistency"));
     }
 
+    public void testTarNoDSOption(File dump) throws Exception {
+        DataStoreCheckCommand checkCommand = new DataStoreCheckCommand();
+        List<String> argsList = Lists
+            .newArrayList("--id", "--ref", "--consistency", "--nods", 
"--store", storePath,
+                "--dump", dump.getAbsolutePath(), "--repoHome", 
temporaryFolder.newFolder().getAbsolutePath());
+        checkCommand.execute(argsList.toArray(new String[0]));
+    }
+
     @Test
     public void testTarNoDS() throws Exception {
         setupDataStore.close();


Reply via email to