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 al...@apache.org on 2016/01/25 14:46:02 UTC

svn commit: r1726625 - /jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Segment.java

Author: alexparvulescu
Date: Mon Jan 25 13:46:02 2016
New Revision: 1726625

URL: http://svn.apache.org/viewvc?rev=1726625&view=rev
Log:
OAK-3922 Provide flag to disable template cache in segments

Modified:
    jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Segment.java

Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Segment.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Segment.java?rev=1726625&r1=1726624&r2=1726625&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Segment.java (original)
+++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Segment.java Mon Jan 25 13:46:02 2016
@@ -22,6 +22,7 @@ import static com.google.common.base.Pre
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 import static com.google.common.collect.Maps.newConcurrentMap;
+import static java.lang.Boolean.getBoolean;
 import static org.apache.jackrabbit.oak.commons.IOUtils.closeQuietly;
 import static org.apache.jackrabbit.oak.plugins.segment.SegmentVersion.V_11;
 import static org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.BLOCK_SIZE;
@@ -163,7 +164,9 @@ public class Segment {
      * Template records read from segment. Used to avoid duplicate
      * copies and repeated parsing of the same templates.
      */
-    private final ConcurrentMap<Integer, Template> templates = newConcurrentMap();
+    private final ConcurrentMap<Integer, Template> templates;
+
+    private static final boolean DISABLE_TEMPLATE_CACHE = getBoolean("oak.segment.disableTemplateCache");
 
     private volatile long accessed;
 
@@ -211,6 +214,11 @@ public class Segment {
             strings = null;
             stringCache = tracker.getStringCache();
         }
+        if (DISABLE_TEMPLATE_CACHE) {
+            templates = null;
+        } else {
+            templates = newConcurrentMap();
+        }
         this.data = checkNotNull(data);
         if (id.isDataSegmentId()) {
             byte segmentVersion = data.get(3);
@@ -256,6 +264,12 @@ public class Segment {
             strings = null;
             stringCache = tracker.getStringCache();
         }
+        if (DISABLE_TEMPLATE_CACHE) {
+            templates = null;
+        } else {
+            templates = newConcurrentMap();
+        }
+
         this.data = ByteBuffer.wrap(checkNotNull(buffer));
         this.refids = new SegmentId[SEGMENT_REFERENCE_LIMIT + 1];
         this.refids[0] = id;
@@ -529,6 +543,9 @@ public class Segment {
     }
 
     private Template readTemplate(int offset) {
+        if (templates == null) {
+            return loadTemplate(offset);
+        }
         Template template = templates.get(offset);
         if (template == null) {
             template = loadTemplate(offset);