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();
}