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