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


Reply via email to