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 mr...@apache.org on 2015/01/27 13:45:36 UTC

svn commit: r1655028 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java

Author: mreutegg
Date: Tue Jan 27 12:45:35 2015
New Revision: 1655028

URL: http://svn.apache.org/r1655028
Log:
OAK-2448: Do not create nodeChildren cache entry for leaf

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java

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=1655028&r1=1655027&r2=1655028&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 Tue Jan 27 12:45:35 2015
@@ -946,7 +946,7 @@ public final class DocumentNodeStore
                              boolean isNew, List<String> added,
                              List<String> removed, List<String> changed,
                              DiffCache.Entry cacheEntry) {
-        if (isNew) {
+        if (isNew && !added.isEmpty()) {
             DocumentNodeState.Children c = new DocumentNodeState.Children();
             Set<String> set = Sets.newTreeSet();
             for (String p : added) {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java?rev=1655028&r1=1655027&r2=1655028&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java Tue Jan 27 12:45:35 2015
@@ -65,6 +65,22 @@ public class ManyChildNodesTest {
         }
         mk.dispose();
     }
+    
+    // OAK-2448
+    @Test
+    public void nodeChildrenCache() throws Exception {
+        DocumentNodeStore ns = new DocumentMK.Builder().getNodeStore();
+        NodeBuilder builder = ns.getRoot().builder();
+        for (int i = 0; i < 1000; i++) {
+            builder.child("c-" + i);
+        }
+        ns.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+        
+        // must not create entries for each child node
+        assertTrue(ns.getNodeChildrenCacheStats().getElementCount() < 1000);
+        
+        ns.dispose();
+    }
 
     private final class TestStore extends MemoryDocumentStore {