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 al...@apache.org on 2014/08/28 22:32:07 UTC
svn commit: r1621201 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java
Author: alexparvulescu
Date: Thu Aug 28 20:32:07 2014
New Revision: 1621201
URL: http://svn.apache.org/r1621201
Log:
OAK-2059 Reindexing can include hidden nodes in the index
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java?rev=1621201&r1=1621200&r2=1621201&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java Thu Aug 28 20:32:07 2014
@@ -28,6 +28,9 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.MISSING_NODE;
+import static org.apache.jackrabbit.oak.spi.commit.CompositeEditor.compose;
+import static org.apache.jackrabbit.oak.spi.commit.EditorDiff.process;
+import static org.apache.jackrabbit.oak.spi.commit.VisibleEditor.wrap;
import java.util.HashMap;
import java.util.List;
@@ -39,16 +42,14 @@ import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.spi.commit.CompositeEditor;
import org.apache.jackrabbit.oak.spi.commit.Editor;
-import org.apache.jackrabbit.oak.spi.commit.EditorDiff;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
-
-import com.google.common.base.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Objects;
+
public class IndexUpdate implements Editor {
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -118,8 +119,8 @@ public class IndexUpdate implements Edit
}
// no-op when reindex is empty
- CommitFailedException exception = EditorDiff.process(
- CompositeEditor.compose(reindex.values()), MISSING_NODE, after);
+ CommitFailedException exception = process(
+ wrap(compose(reindex.values())), MISSING_NODE, after);
if (exception != null) {
throw exception;
}
@@ -231,7 +232,7 @@ public class IndexUpdate implements Edit
children.add(child);
}
}
- return CompositeEditor.compose(children);
+ return compose(children);
}
@Override @Nonnull
@@ -246,7 +247,7 @@ public class IndexUpdate implements Edit
children.add(child);
}
}
- return CompositeEditor.compose(children);
+ return compose(children);
}
@Override @CheckForNull
@@ -259,7 +260,7 @@ public class IndexUpdate implements Edit
children.add(child);
}
}
- return CompositeEditor.compose(children);
+ return compose(children);
}
protected Set<String> getReindexedDefinitions() {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java?rev=1621201&r1=1621200&r2=1621201&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java Thu Aug 28 20:32:07 2014
@@ -35,6 +35,7 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexLookup;
+import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
import org.apache.jackrabbit.oak.query.QueryEngineSettings;
import org.apache.jackrabbit.oak.query.ast.SelectorImpl;
import org.apache.jackrabbit.oak.query.index.FilterImpl;
@@ -206,6 +207,38 @@ public class IndexUpdateTest {
}
@Test
+ public void testReindexHidden() throws Exception {
+ NodeState before = EmptyNodeState.EMPTY_NODE;
+ NodeBuilder builder = before.builder();
+ builder.child(":testRoot").setProperty("foo", "abc");
+ createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
+ "rootIndex", false, false, ImmutableSet.of("foo"), null);
+ NodeState after = builder.getNodeState();
+ NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY);
+
+ // first check that the index content nodes exist
+ NodeState ns = checkPathExists(indexed, INDEX_DEFINITIONS_NAME,
+ "rootIndex");
+ NodeState index = checkPathExists(ns, INDEX_CONTENT_NODE_NAME);
+ PropertyState ps = ns.getProperty(REINDEX_PROPERTY_NAME);
+ assertNotNull(ps);
+ assertFalse(ps.getValue(Type.BOOLEAN));
+ assertFalse(index.getChildNodeCount(1) > 0);
+
+ before = indexed;
+ builder = before.builder();
+ builder.child(INDEX_DEFINITIONS_NAME).child("rootIndex")
+ .setProperty("reindex", true);
+ after = builder.getNodeState();
+ indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY);
+ index = checkPathExists(ns, INDEX_CONTENT_NODE_NAME);
+ ps = ns.getProperty(REINDEX_PROPERTY_NAME);
+ assertNotNull(ps);
+ assertFalse(ps.getValue(Type.BOOLEAN));
+ assertFalse(index.getChildNodeCount(1) > 0);
+ }
+
+ @Test
public void testIndexDefinitions() throws Exception {
createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
"existing", true, false, ImmutableSet.of("foo"), null);