diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java index a572b1b385..6d22ca993d 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java @@ -127,6 +127,12 @@ public class SegmentNodeStoreFactory { ) int segmentCache_size() default DEFAULT_SEGMENT_CACHE_MB; + @AttributeDefinition( + name = "Eager segment caching", + description = "Boolean value of true indicates that when segment is being persisted it will be also loaded in the segment cache." + ) + boolean eagerSegmentCaching() default false; + @AttributeDefinition( name = "String cache size (MB)", description = "Cache size for storing most recently used strings in megabytes. " + @@ -505,6 +511,11 @@ public class SegmentNodeStoreFactory { return getCacheSize("segmentCache.size", configuration.segmentCache_size()); } + @Override + public boolean isEagerSegmentCaching() { + return configuration.eagerSegmentCaching(); + } + @Override public int getStringCacheSize() { return getCacheSize("stringCache.size", configuration.stringCache_size()); diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java index 38be06ecd4..ddae61980f 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java @@ -125,6 +125,8 @@ class SegmentNodeStoreRegistrar { int getSegmentCacheSize(); + boolean isEagerSegmentCaching(); + int getStringCacheSize(); int getTemplateCacheSize(); @@ -263,6 +265,10 @@ class SegmentNodeStoreRegistrar { } } + if (cfg.isEagerSegmentCaching()) { + builder.withEagerSegmentCaching(true); + } + if (cfg.isStandbyInstance()) { builder.withSnfeListener(IGNORE_SNFE); builder.withEagerSegmentCaching(true); diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java index dd7b1298f3..9f5b1336c9 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java @@ -125,6 +125,12 @@ public class SegmentNodeStoreService { ) int segmentCache_size() default DEFAULT_SEGMENT_CACHE_MB; + @AttributeDefinition( + name = "Eager segment caching", + description = "Boolean value of true indicates that when segment is being persisted it will be also loaded in the segment cache." + ) + boolean eagerSegmentCaching() default false; + @AttributeDefinition( name = "String cache size (MB)", description = "Cache size for storing most recently used strings in megabytes. " + @@ -438,6 +444,11 @@ public class SegmentNodeStoreService { return configuration.segmentCache_size(); } + @Override + public boolean isEagerSegmentCaching() { + return configuration.eagerSegmentCaching(); + } + @Override public int getStringCacheSize() { return getCacheSize("stringCache.size", configuration.stringCache_size());