Author: chetanm
Date: Fri Jun  2 03:59:22 2017
New Revision: 1797313

URL: http://svn.apache.org/viewvc?rev=1797313&view=rev
Log:
OAK-6081 - Indexing tooling via oak-run

Enable specifying cache distribution percentage explicitly so that
it can be tuned as per command requirement

Modified:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentNodeStoreOptions.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentNodeStoreOptions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentNodeStoreOptions.java?rev=1797313&r1=1797312&r2=1797313&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentNodeStoreOptions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/DocumentNodeStoreOptions.java
 Fri Jun  2 03:59:22 2017
@@ -30,6 +30,10 @@ public class DocumentNodeStoreOptions im
     private final OptionSpec<Integer> clusterId;
     private final OptionSpec<Void> disableBranchesSpec;
     private final OptionSpec<Integer> cacheSizeSpec;
+    private final OptionSpec<Integer> nodeCachePercentage;
+    private final OptionSpec<Integer> prevDocCachePercentage;
+    private final OptionSpec<Integer> childrenCachePercentage;
+    private final OptionSpec<Integer> diffCachePercentage;
     private OptionSet options;
 
     public DocumentNodeStoreOptions(OptionParser parser){
@@ -40,6 +44,18 @@ public class DocumentNodeStoreOptions im
         cacheSizeSpec = parser.
                 accepts("cacheSize", "The cache size")
                 .withRequiredArg().ofType(Integer.class).defaultsTo(0);
+        nodeCachePercentage = parser.
+                accepts("nodeCachePercentage", "Percentage of cache to be 
allocated towards Node cache")
+                .withRequiredArg().ofType(Integer.class).defaultsTo(35);
+        prevDocCachePercentage = parser.
+                accepts("prevDocCachePercentage", "Percentage of cache to be 
allocated towards Previous Document cache")
+                .withRequiredArg().ofType(Integer.class).defaultsTo(4);
+        childrenCachePercentage = parser.
+                accepts("childrenCachePercentage", "Percentage of cache to be 
allocated towards Children cache")
+                .withRequiredArg().ofType(Integer.class).defaultsTo(15);
+        diffCachePercentage = parser.
+                accepts("diffCachePercentage", "Percentage of cache to be 
allocated towards Diff cache")
+                .withRequiredArg().ofType(Integer.class).defaultsTo(30);
     }
 
     @Override
@@ -54,7 +70,8 @@ public class DocumentNodeStoreOptions im
 
     @Override
     public String description() {
-        return "Options related to constructing a DocumentNodeStore.";
+        return "Options related to constructing a DocumentNodeStore. \n" +
+                "Note that left over of sum of all cache ratio defined is 
allocated to documentCache.";
     }
 
     @Override
@@ -78,4 +95,27 @@ public class DocumentNodeStoreOptions im
     public boolean disableBranchesSpec() {
         return options.has(disableBranchesSpec);
     }
+
+    public int getNodeCachePercentage() {
+        return nodeCachePercentage.value(options);
+    }
+
+    public int getPrevDocCachePercentage() {
+        return prevDocCachePercentage.value(options);
+    }
+
+    public int getChildrenCachePercentage() {
+        return childrenCachePercentage.value(options);
+    }
+
+    public int getDiffCachePercentage() {
+        return diffCachePercentage.value(options);
+    }
+
+    public boolean isCacheDistributionDefined(){
+        return options.has(nodeCachePercentage) ||
+                options.has(prevDocCachePercentage) ||
+                options.has(childrenCachePercentage) ||
+                options.has(diffCachePercentage);
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java?rev=1797313&r1=1797312&r2=1797313&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java
 Fri Jun  2 03:59:22 2017
@@ -113,6 +113,15 @@ public class NodeStoreFixtureProvider {
 
         CommonOptions commonOpts = options.getOptionBean(CommonOptions.class);
 
+        if (docStoreOpts.isCacheDistributionDefined()){
+            builder.memoryCacheDistribution(
+                    docStoreOpts.getNodeCachePercentage(),
+                    docStoreOpts.getPrevDocCachePercentage(),
+                    docStoreOpts.getChildrenCachePercentage(),
+                    docStoreOpts.getDiffCachePercentage()
+            );
+        }
+
         if (commonOpts.isMongo()) {
             MongoClientURI uri = new MongoClientURI(commonOpts.getStoreArg());
             if (uri.getDatabase() == null) {
@@ -121,7 +130,7 @@ public class NodeStoreFixtureProvider {
                 System.exit(1);
             }
             MongoConnection mongo = new MongoConnection(uri.getURI());
-            closer.register(() -> mongo.close());
+            closer.register(mongo::close);
             builder.setMongoDB(mongo.getDB());
         } else if (commonOpts.isRDB()) {
             RDBStoreOptions rdbOpts = 
options.getOptionBean(RDBStoreOptions.class);


Reply via email to