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


Reply via email to