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