You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2014/08/12 09:22:07 UTC

svn commit: r1617429 - in /jackrabbit/oak/branches/1.0: ./ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/docume...

Author: chetanm
Date: Tue Aug 12 07:22:06 2014
New Revision: 1617429

URL: http://svn.apache.org/r1617429
Log:
OAK-2025 - Make the cache size in MongoBlobStore configurable

Merge 1617417

Modified:
    jackrabbit/oak/branches/1.0/   (props changed)
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java
    jackrabbit/oak/branches/1.0/oak-doc/   (props changed)

Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1617417

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java?rev=1617429&r1=1617428&r2=1617429&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java Tue Aug 12 07:22:06 2014
@@ -25,10 +25,17 @@ import com.google.common.cache.Weigher;
  * A blob store with a cache.
  */
 public abstract class CachingBlobStore extends AbstractBlobStore {
-    
-    protected final CacheLIRS<String, byte[]> cache = 
-            CacheLIRS.newBuilder().
-                maximumWeight(16 * 1024 * 1024).
+
+    protected static final long DEFAULT_CACHE_SIZE = 16*1024*1024;
+
+    protected final CacheLIRS<String, byte[]> cache;
+
+    protected final long blobCacheSize;
+
+    public CachingBlobStore(long cacheSize) {
+        this.blobCacheSize = cacheSize;
+        cache = CacheLIRS.newBuilder().
+                maximumWeight(cacheSize).
                 averageWeight(getBlockSize() / 2).
                 weigher(new Weigher<String, byte[]>() {
                     @Override
@@ -37,9 +44,19 @@ public abstract class CachingBlobStore e
                     }
                 }).build();
 
+    }
+
+    public CachingBlobStore() {
+        this(DEFAULT_CACHE_SIZE);
+    }
+
     @Override
     public void clearCache() {
         cache.invalidateAll();
     }
-    
+
+    public long getBlobCacheSize() {
+        //Required for testcase to validate the configured cache size
+        return blobCacheSize;
+    }
 }

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java?rev=1617429&r1=1617428&r2=1617429&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java Tue Aug 12 07:22:06 2014
@@ -481,14 +481,14 @@ public class DocumentMK implements Micro
          *                      the MongoDiffCache.
          * @return this
          */
-        public Builder setMongoDB(DB db, int changesSizeMB) {
+        public Builder setMongoDB(DB db, int changesSizeMB, int blobCacheSizeMB) {
             if (db != null) {
                 if (this.documentStore == null) {
                     this.documentStore = new MongoDocumentStore(db, this);
                 }
 
                 if (this.blobStore == null) {
-                    this.blobStore = new MongoBlobStore(db);
+                    this.blobStore = new MongoBlobStore(db, blobCacheSizeMB * 1024 * 1024);
                 }
 
                 if (this.diffCache == null) {
@@ -505,7 +505,7 @@ public class DocumentMK implements Micro
          * @return this
          */
         public Builder setMongoDB(DB db) {
-            return setMongoDB(db, 8);
+            return setMongoDB(db, 8, 16);
         }
 
         /**

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java?rev=1617429&r1=1617428&r2=1617429&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java Tue Aug 12 07:22:06 2014
@@ -75,6 +75,7 @@ public class DocumentNodeStoreService {
     private static final int DEFAULT_CACHE = 256;
     private static final int DEFAULT_OFF_HEAP_CACHE = 0;
     private static final int DEFAULT_CHANGES_SIZE = 256;
+    private static final int DEFAULT_BLOB_CACHE_SIZE = 16;
     private static final String DEFAULT_DB = "oak";
     private static final String PREFIX = "oak.documentstore.";
 
@@ -109,6 +110,9 @@ public class DocumentNodeStoreService {
     @Property(intValue =  DEFAULT_CHANGES_SIZE)
     private static final String PROP_CHANGES_SIZE = "changesSize";
 
+    @Property(intValue =  DEFAULT_BLOB_CACHE_SIZE)
+    private static final String PROP_BLOB_CACHE_SIZE = "blobCacheSize";
+
     /**
      * Boolean value indicating a blobStore is to be used
      */
@@ -182,6 +186,7 @@ public class DocumentNodeStoreService {
         int offHeapCache = PropertiesUtil.toInteger(prop(PROP_OFF_HEAP_CACHE), DEFAULT_OFF_HEAP_CACHE);
         int cacheSize = PropertiesUtil.toInteger(prop(PROP_CACHE), DEFAULT_CACHE);
         int changesSize = PropertiesUtil.toInteger(prop(PROP_CHANGES_SIZE), DEFAULT_CHANGES_SIZE);
+        int blobCacheSize = PropertiesUtil.toInteger(prop(PROP_BLOB_CACHE_SIZE), DEFAULT_BLOB_CACHE_SIZE);
         boolean useMK = PropertiesUtil.toBoolean(context.getProperties().get(PROP_USE_MK), false);
 
 
@@ -193,8 +198,8 @@ public class DocumentNodeStoreService {
             // might contain passwords
             String type = useMK ? "MK" : "NodeStore";
             log.info("Starting Document{} with host={}, db={}, cache size (MB)={}, Off Heap Cache size (MB)={}, " +
-                            "'changes' collection size (MB)={}, maxReplicationLagInSecs={}",
-                    type, mongoURI.getHosts(), db, cacheSize, offHeapCache, changesSize, maxReplicationLagInSecs);
+                            "'changes' collection size (MB)={}, blobCacheSize (MB)={}, maxReplicationLagInSecs={}",
+                    type, mongoURI.getHosts(), db, cacheSize, offHeapCache, changesSize, blobCacheSize, maxReplicationLagInSecs);
             log.info("Mongo Connection details {}", MongoConnection.toString(mongoURI.getOptions()));
         }
 
@@ -212,7 +217,7 @@ public class DocumentNodeStoreService {
         }
 
         mkBuilder.setMaxReplicationLag(maxReplicationLagInSecs, TimeUnit.SECONDS);
-        mkBuilder.setMongoDB(mongoDB, changesSize);
+        mkBuilder.setMongoDB(mongoDB, changesSize, blobCacheSize);
         mkBuilder.setExecutor(executor);
         mk = mkBuilder.open();
 

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java?rev=1617429&r1=1617428&r2=1617429&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java Tue Aug 12 07:22:06 2014
@@ -60,6 +60,11 @@ public class MongoBlobStore extends Cach
      * @param db The DB.
      */
     public MongoBlobStore(DB db) {
+        this(db, DEFAULT_CACHE_SIZE);
+    }
+
+    public MongoBlobStore(DB db, long cacheSize){
+        super(cacheSize);
         this.db = db;
         initBlobCollection();
     }

Propchange: jackrabbit/oak/branches/1.0/oak-doc/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk/oak-doc:r1617417