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