Author: chetanm
Date: Fri Nov 4 19:39:02 2016
New Revision: 1768083
URL: http://svn.apache.org/viewvc?rev=1768083&view=rev
Log:
OAK-4606 - Avoid persisting rootRevision in PathFilteringDiff
The root rev would only be persisted for root doc. lastRev would be persisted
for each doc
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/DelegatingDocumentNodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/PathFilteringDiff.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/DelegatingDocumentNodeState.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/DelegatingDocumentNodeState.java?rev=1768083&r1=1768082&r2=1768083&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/DelegatingDocumentNodeState.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/DelegatingDocumentNodeState.java
Fri Nov 4 19:39:02 2016
@@ -67,7 +67,7 @@ class DelegatingDocumentNodeState extend
/**
- * Wraps a given NodeState as a {@link DelegatingDocumentNodeState} if
+ * Wraps a given root NodeState as a {@link DelegatingDocumentNodeState} if
* it has required meta properties otherwise just returns the passed
NodeState
*
* @param delegate nodeState to wrap
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/PathFilteringDiff.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/PathFilteringDiff.java?rev=1768083&r1=1768082&r2=1768083&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/PathFilteringDiff.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/PathFilteringDiff.java
Fri Nov 4 19:39:02 2016
@@ -22,6 +22,7 @@ package org.apache.jackrabbit.oak.plugin
import java.util.List;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.plugins.document.AbstractDocumentNodeState;
import org.apache.jackrabbit.oak.plugins.document.RevisionVector;
import org.apache.jackrabbit.oak.plugins.index.PathFilter;
@@ -102,7 +103,12 @@ class PathFilteringDiff extends ApplyDif
}
static void copyMetaProperties(AbstractDocumentNodeState state,
NodeBuilder builder, List<String> metaPropNames) {
- builder.setProperty(asPropertyState(PROP_REVISION,
state.getRootRevision()));
+ //Only set root revision on root node
+ if (PathUtils.denotesRoot(state.getPath())) {
+ builder.setProperty(asPropertyState(PROP_REVISION,
state.getRootRevision()));
+ }
+
+ //LastRev would be set on each node
builder.setProperty(asPropertyState(PROP_LAST_REV,
state.getLastRevision()));
for (String metaProp : metaPropNames){
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java?rev=1768083&r1=1768082&r2=1768083&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java
Fri Nov 4 19:39:02 2016
@@ -108,6 +108,14 @@ public class SecondaryStoreCacheTest {
= cache.getDocumentNodeState("/a/c", r2.getRootRevision(),
a_r2.getLastRevision());
assertTrue(EqualsDiff.equals(a_r2, result));
+ //Child docs should only have lastRev and not root rev
+
assertTrue(result.hasProperty(DelegatingDocumentNodeState.PROP_LAST_REV));
+
assertFalse(result.hasProperty(DelegatingDocumentNodeState.PROP_REVISION));
+
+ //Root doc would have both meta props
+
assertTrue(secondary.getRoot().hasProperty(DelegatingDocumentNodeState.PROP_LAST_REV));
+
assertTrue(secondary.getRoot().hasProperty(DelegatingDocumentNodeState.PROP_REVISION));
+
nb = primary.getRoot().builder();
nb.child("a").child("c").remove();
AbstractDocumentNodeState r3 = merge(nb);