Author: thomasm
Date: Thu Oct 24 09:26:12 2013
New Revision: 1535325
URL: http://svn.apache.org/r1535325
Log:
OAK-455 Caching in MongoMK (add a utility method unshareString, which can be
disabled when Java 7u6 becomes the minimum)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/util/Utils.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java?rev=1535325&r1=1535324&r2=1535325&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeStore.java
Thu Oct 24 09:26:12 2013
@@ -674,9 +674,7 @@ public final class MongoNodeStore
}
set.removeAll(removed);
for (String name : added) {
- // make sure the name string does not contain
- // unnecessary baggage
- set.add(new String(name));
+ set.add(Utils.unshareString(name));
}
c2.children.addAll(set);
nodeChildrenCache.put(key, c2);
@@ -693,17 +691,13 @@ public final class MongoNodeStore
for (String childPath : added) {
String name = PathUtils.getName(childPath);
if (names.higher(name) != null) {
- // make sure the name string does not contain
- // unnecessary baggage
- names.add(new String(name));
+ names.add(Utils.unshareString(name));
}
}
} else {
// add all
for (String childPath : added) {
- // make sure the name string does not contain
- // unnecessary baggage
- names.add(new String(PathUtils.getName(childPath)));
+
names.add(Utils.unshareString(PathUtils.getName(childPath)));
}
}
// any changes?
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/util/Utils.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/util/Utils.java?rev=1535325&r1=1535324&r2=1535325&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/util/Utils.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/util/Utils.java
Thu Oct 24 09:26:12 2013
@@ -40,6 +40,21 @@ import static com.google.common.base.Pre
*/
public class Utils {
+ /**
+ * Make sure the name string does not contain unnecessary baggage (shared
+ * strings).
+ * <p>
+ * This is only needed for older versions of Java (before Java 7 update 6).
+ * See also
+ *
http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-May/010257.html
+ *
+ * @param x the string
+ * @return the new string
+ */
+ public static String unshareString(String x) {
+ return new String(x);
+ }
+
public static int pathDepth(String path) {
if (path.equals("/")) {
return 0;
@@ -92,8 +107,10 @@ public class Utils {
size += map.size() * 136;
} else {
// overhead for some other kind of map
- size += 112; // TreeMap (80) + unmodifiable wrapper (32)
- size += map.size() * 64; // 64 bytes per entry
+ // TreeMap (80) + unmodifiable wrapper (32)
+ size += 112;
+ // 64 bytes per entry
+ size += map.size() * 64;
}
return size;
}