On 21.6.13 10:46, Jukka Zitting wrote:
I'd look higher up the stack.

Indeed.

If I do

--- oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java (date 1371713356000) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java (revision )
@@ -419,8 +419,7 @@
                         return true; // no differences
                     } else if (id != null && id.equals(kbase.id)) {
                         return true; // no differences
-                    } else if (path.equals(kbase.path)
-                            && childNodeCount > MAX_CHILD_NODE_NAMES) {
+                    } else if (path.equals(kbase.path)) {
                         // use MK.diff() when there are 'many' child nodes
String jsonDiff = kernel.diff(kbase.getRevision(), revision, path, 0);
                         processJsonDiff(jsonDiff, kbase, diff);

These stack traces do not show up any more and there is no more piling up of observation events. Furthermore total execution time of benchmark/ObservationTime goes down by a factor of 3!

Any reason we only use the kernel diff for big child node lists?

Michael

Reply via email to