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 md...@apache.org on 2016/05/23 11:55:14 UTC

svn commit: r1745162 - in /jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment: Segment.java SegmentTracker.java

Author: mduerig
Date: Mon May 23 11:55:14 2016
New Revision: 1745162

URL: http://svn.apache.org/viewvc?rev=1745162&view=rev
Log:
OAK-4394: Remove deprecated string cache
Remove the old and deprecated strings cache

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

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java?rev=1745162&r1=1745161&r2=1745162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java Mon May 23 11:55:14 2016
@@ -144,16 +144,6 @@ public class Segment {
      */
     private final SegmentId[] refids;
 
-    /**
-     * String records read from segment. Used to avoid duplicate
-     * copies and repeated parsing of the same strings.
-     *
-     * @deprecated  Superseded by {@link #stringCache} unless
-     * {@link SegmentTracker#DISABLE_STRING_CACHE} is {@code true}.
-     */
-    @Deprecated
-    private final ConcurrentMap<Integer, String> strings;
-
     private final Function<Integer, String> loadString = new Function<Integer, String>() {
         @Nullable
         @Override
@@ -163,7 +153,7 @@ public class Segment {
     };
 
     /**
-     * Cache for string records or {@code null} if {@link #strings} is used for caching
+     * Cache for string records
      */
     private final StringCache stringCache;
 
@@ -213,13 +203,8 @@ public class Segment {
         Preconditions.checkArgument(isValid(version));
         this.tracker = checkNotNull(tracker);
         this.id = checkNotNull(id);
-        if (tracker.getStringCache() == null) {
-            strings = newConcurrentMap();
-            stringCache = null;
-        } else {
-            strings = null;
-            stringCache = tracker.getStringCache();
-        }
+
+        stringCache = tracker.getStringCache();
         if (DISABLE_TEMPLATE_CACHE) {
             templates = null;
         } else {
@@ -264,13 +249,7 @@ public class Segment {
         this.tracker = checkNotNull(tracker);
         this.id = tracker.newDataSegmentId();
         this.info = info;
-        if (tracker.getStringCache() == null) {
-            strings = newConcurrentMap();
-            stringCache = null;
-        } else {
-            strings = null;
-            stringCache = tracker.getStringCache();
-        }
+        stringCache = tracker.getStringCache();
         if (DISABLE_TEMPLATE_CACHE) {
             templates = null;
         } else {
@@ -520,18 +499,9 @@ public class Segment {
     }
 
     private String readString(int offset) {
-        if (stringCache != null) {
-            long msb = id.getMostSignificantBits();
-            long lsb = id.getLeastSignificantBits();
-            return stringCache.getString(msb, lsb, offset, loadString);
-        } else {
-            String string = strings.get(offset);
-            if (string == null) {
-                string = loadString(offset);
-                strings.putIfAbsent(offset, string); // only keep the first copy
-            }
-            return string;
-        }
+        long msb = id.getMostSignificantBits();
+        long lsb = id.getLeastSignificantBits();
+        return stringCache.getString(msb, lsb, offset, loadString);
     }
 
     private String loadString(int offset) {

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java?rev=1745162&r1=1745161&r2=1745162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java Mon May 23 11:55:14 2016
@@ -20,7 +20,7 @@ package org.apache.jackrabbit.oak.segmen
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.Sets.newHashSet;
-import static java.lang.Boolean.getBoolean;
+import static java.lang.Long.getLong;
 
 import java.security.SecureRandom;
 import java.util.Set;
@@ -51,12 +51,6 @@ public class SegmentTracker {
     private static final Logger log =
             LoggerFactory.getLogger(SegmentTracker.class);
 
-    /**
-     * Disable the {@link #stringCache} if {@code true} and fall back to
-     * the previous {@link Segment#strings} caching mechanism.
-     */
-    private static final boolean DISABLE_STRING_CACHE = getBoolean("oak.segment.disableStringCache");
-
     static final String STRING_CACHE_SIZE = "oak.segment.stringCache";
 
     private static final long MSB_MASK = ~(0xfL << 12);
@@ -118,14 +112,7 @@ public class SegmentTracker {
         this.store = store;
         this.writer = new SegmentWriter(store, version,
                             new SegmentBufferWriterPool(store, version, "sys"));
-        StringCache c;
-        if (DISABLE_STRING_CACHE) {
-            c = null;
-        } else {
-            long cache = Long.getLong(STRING_CACHE_SIZE, (long) cacheSizeMB);
-            c = new StringCache(cache * MB);
-        }
-        stringCache = c;
+        stringCache = new StringCache(getLong(STRING_CACHE_SIZE, (long) cacheSizeMB) * MB);
         segmentCache = CacheLIRS.<SegmentId, Segment>newBuilder()
             .module("SegmentTracker")
             .maximumWeight((long) cacheSizeMB * MB)
@@ -168,9 +155,7 @@ public class SegmentTracker {
 
     @CheckForNull
     public CacheStats getStringCacheStats() {
-        return stringCache == null
-            ? null
-            : stringCache.getStats();
+        return stringCache.getStats();
     }
 
     public SegmentWriter getWriter() {
@@ -186,9 +171,7 @@ public class SegmentTracker {
      */
     public synchronized void clearCache() {
         segmentCache.invalidateAll();
-        if (stringCache != null) {
-            stringCache.clear();
-        }
+        stringCache.clear();
     }
 
     /**