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 re...@apache.org on 2019/05/30 09:09:37 UTC
svn commit: r1860393 - in
/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document:
DocumentNodeStoreBuilder.java mongo/MongoDocumentNodeStoreBuilderBase.java
rdb/RDBDocumentNodeStoreBuilder.java
Author: reschke
Date: Thu May 30 09:09:37 2019
New Revision: 1860393
URL: http://svn.apache.org/viewvc?rev=1860393&view=rev
Log:
OAK-8375: DocumentNodeStoreBuilder should not instantiate BlobStore instance before "build()"
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java?rev=1860393&r1=1860392&r2=1860393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java Thu May 30 09:09:37 2019
@@ -109,7 +109,7 @@ public class DocumentNodeStoreBuilder<T
static final int UPDATE_LIMIT = Integer.getInteger("update.limit", DEFAULT_UPDATE_LIMIT);
protected Supplier<DocumentStore> documentStoreSupplier = ofInstance(new MemoryDocumentStore());
- protected BlobStore blobStore;
+ protected Supplier<BlobStore> blobStoreSupplier;
private DiffCache diffCache;
private int clusterId = Integer.getInteger("oak.documentMK.clusterId", 0);
private int asyncDelay = 1000;
@@ -294,15 +294,16 @@ public class DocumentNodeStoreBuilder<T
* @return this
*/
public T setBlobStore(BlobStore blobStore) {
- this.blobStore = blobStore;
+ this.blobStoreSupplier = ofInstance(blobStore);
return thisBuilder();
}
public BlobStore getBlobStore() {
- if (blobStore == null) {
- blobStore = new MemoryBlobStore();
- configureBlobStore(blobStore);
+ if (blobStoreSupplier == null) {
+ blobStoreSupplier = ofInstance(new MemoryBlobStore());
}
+ BlobStore blobStore = blobStoreSupplier.get();
+ configureBlobStore(blobStore);
return blobStore;
}
@@ -740,11 +741,6 @@ public class DocumentNodeStoreBuilder<T
build();
}
- protected void setGCBlobStore(GarbageCollectableBlobStore s) {
- configureBlobStore(s);
- this.blobStore = s;
- }
-
/**
* BlobStore which are created by builder might get wrapped.
* So here we perform any configuration and also access any
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java?rev=1860393&r1=1860392&r2=1860393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java Thu May 30 09:09:37 2019
@@ -31,7 +31,6 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.document.MissingLastRevSeeker;
import org.apache.jackrabbit.oak.plugins.document.VersionGCSupport;
import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
-import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -226,10 +225,10 @@ public abstract class MongoDocumentNodeS
this.documentStoreSupplier = memoize(() -> new MongoDocumentStore(
client, db, MongoDocumentNodeStoreBuilderBase.this));
- if (this.blobStore == null) {
- GarbageCollectableBlobStore s = new MongoBlobStore(db, blobCacheSizeMB * 1024 * 1024L);
- setGCBlobStore(s);
+ if (this.blobStoreSupplier == null) {
+ this.blobStoreSupplier = memoize(() -> new MongoBlobStore(db, blobCacheSizeMB * 1024 * 1024L));
}
+
return thisBuilder();
}
}
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java?rev=1860393&r1=1860392&r2=1860393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java Thu May 30 09:09:37 2019
@@ -26,7 +26,6 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
import org.apache.jackrabbit.oak.plugins.document.MissingLastRevSeeker;
import org.apache.jackrabbit.oak.plugins.document.VersionGCSupport;
-import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
/**
* A builder for a {@link DocumentNodeStore} backed by a relational database.
@@ -82,9 +81,8 @@ public class RDBDocumentNodeStoreBuilder
*/
public RDBDocumentNodeStoreBuilder setRDBConnection(DataSource documentStoreDataSource, DataSource blobStoreDataSource, RDBOptions options) {
this.documentStoreSupplier = memoize(() -> new RDBDocumentStore(documentStoreDataSource, this, options));
- if (blobStore == null) {
- GarbageCollectableBlobStore s = new RDBBlobStore(blobStoreDataSource, options);
- setGCBlobStore(s);
+ if (this.blobStoreSupplier == null) {
+ this.blobStoreSupplier = memoize(() -> new RDBBlobStore(blobStoreDataSource, options));
}
return thisBuilder();
}