Author: thomasm
Date: Wed Mar 12 10:26:13 2014
New Revision: 1576681
URL: http://svn.apache.org/r1576681
Log:
OAK-333 1000 byte path limit in MongoMK (WIP)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocOffHeapCache.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidator.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java?rev=1576681&r1=1576680&r2=1576681&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/CachedNodeDocument.java
Wed Mar 12 10:26:13 2014
@@ -35,4 +35,7 @@ public interface CachedNodeDocument {
void markUpToDate(long checkTime);
boolean isUpToDate(long lastCheckTime);
+
+ String getPath();
+
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java?rev=1576681&r1=1576680&r2=1576681&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
Wed Mar 12 10:26:13 2014
@@ -102,7 +102,7 @@ class Collision {
private static boolean markCommitRoot(@Nonnull NodeDocument document,
@Nonnull Revision revision,
@Nonnull DocumentStore store) {
- String p = Utils.getPathFromId(document.getId());
+ String p = document.getPath();
String commitRootPath = null;
// first check if we can mark the commit with the given revision
if (document.containsRevision(revision)) {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1576681&r1=1576680&r2=1576681&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
Wed Mar 12 10:26:13 2014
@@ -659,7 +659,7 @@ public final class DocumentNodeStore
for (NodeDocument doc : docs) {
numReturned++;
// filter out deleted children
- String p = Utils.getPathFromId(doc.getId());
+ String p = doc.getPath();
DocumentNodeState child = getNode(p, rev);
if (child == null) {
continue;
@@ -720,7 +720,7 @@ public final class DocumentNodeStore
c = new NodeDocument.Children();
List<NodeDocument> docs = store.query(Collection.NODES, from, to,
limit);
for (NodeDocument doc : docs) {
- String p = Utils.getPathFromId(doc.getId());
+ String p = doc.getPath();
c.childNames.add(PathUtils.getName(p));
}
c.isComplete = docs.size() < limit;
@@ -736,7 +736,7 @@ public final class DocumentNodeStore
from, to, remainingLimit);
NodeDocument.Children clone = c.clone();
for (NodeDocument doc : docs) {
- String p = Utils.getPathFromId(doc.getId());
+ String p = doc.getPath();
clone.childNames.add(PathUtils.getName(p));
}
clone.isComplete = docs.size() < remainingLimit;
@@ -1470,7 +1470,7 @@ public final class DocumentNodeStore
Set<String> paths = Sets.newHashSet();
for (NodeDocument doc : store.query(Collection.NODES, fromKey, toKey,
NodeDocument.MODIFIED, minValue, Integer.MAX_VALUE)) {
- paths.add(Utils.getPathFromId(doc.getId()));
+ paths.add(doc.getPath());
}
// also consider nodes with not yet stored modifications (OAK-1107)
Revision minRev = new Revision(minTimestamp, 0, getClusterId());
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java?rev=1576681&r1=1576680&r2=1576681&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
Wed Mar 12 10:26:13 2014
@@ -367,7 +367,7 @@ public final class NodeDocument extends
if (depth.equals("0")) {
return "/";
}
- String p = Utils.getPathFromId(getId());
+ String p = getPath();
return PathUtils.getAncestorPath(p,
PathUtils.getDepth(p) - Integer.parseInt(depth));
}
@@ -481,7 +481,7 @@ public final class NodeDocument extends
// deleted
return null;
}
- String path = Utils.getPathFromId(getId());
+ String path = getPath();
DocumentNodeState n = new DocumentNodeState(nodeStore, path,
readRevision, hasChildren());
Revision lastRevision = min;
for (String key : keySet()) {
@@ -1144,6 +1144,11 @@ public final class NodeDocument extends
}
return value != null ? new Value(value, latestRev) : null;
}
+
+ @Override
+ public String getPath() {
+ return Utils.getPathFromId(getId());
+ }
@Nonnull
private Map<Revision, String> getDeleted() {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocOffHeapCache.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocOffHeapCache.java?rev=1576681&r1=1576680&r2=1576681&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocOffHeapCache.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocOffHeapCache.java
Wed Mar 12 10:26:13 2014
@@ -273,6 +273,7 @@ public class NodeDocOffHeapCache
private final AtomicLong lastCheckTime;
private final Pointer<NodeDocument> documentPointer;
private final CacheValue key;
+ private final String path;
public NodeDocReference(CacheValue key, NodeDocument doc) {
this.modCount = doc.getModCount();
@@ -280,6 +281,12 @@ public class NodeDocOffHeapCache
this.lastCheckTime = new AtomicLong(doc.getLastCheckTime());
this.documentPointer = serialize(doc);
this.key = key;
+ this.path = doc.getPath();
+ }
+
+ @Override
+ public String getPath() {
+ return path;
}
@Override
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidator.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidator.java?rev=1576681&r1=1576680&r2=1576681&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidator.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidator.java
Wed Mar 12 10:26:13 2014
@@ -276,8 +276,7 @@ abstract class CacheInvalidator {
//check them
//TODO Need to determine way to determine if the
//key is referring to a split document
-
- String path = Utils.getPathFromId(e.getKey().toString());
+ String path = e.getValue().getPath();
result.cacheSize++;
for (String name : PathUtils.elements(path)) {
current = current.child(name);