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 ch...@apache.org on 2016/12/01 04:47:29 UTC
svn commit: r1772145 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/index/
test/java/org/apache/jackrabbit/oak/plugins/index/
Author: chetanm
Date: Thu Dec 1 04:47:29 2016
New Revision: 1772145
URL: http://svn.apache.org/viewvc?rev=1772145&view=rev
Log:
OAK-5176 - Allow configuring ignoreReindexFlags on per IndexUpdate basis
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.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=1772145&r1=1772144&r2=1772145&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 Dec 1 04:47:29 2016
@@ -90,7 +90,7 @@ public class IndexUpdate implements Edit
* used with extreme caution!
* </p>
*/
- private static final boolean IGNORE_REINDEX_FLAGS = Boolean
+ static final boolean IGNORE_REINDEX_FLAGS = Boolean
.getBoolean("oak.indexUpdate.ignoreReindexFlags");
static {
@@ -194,11 +194,15 @@ public class IndexUpdate implements Edit
return rootState.getIndexingStats();
}
+ public void setIgnoreReindexFlags(boolean ignoreReindexFlag){
+ rootState.setIgnoreReindexFlags(ignoreReindexFlag);
+ }
+
private boolean shouldReindex(NodeBuilder definition, NodeState before,
String name) {
PropertyState ps = definition.getProperty(REINDEX_PROPERTY_NAME);
if (ps != null && ps.getValue(BOOLEAN)) {
- return !IGNORE_REINDEX_FLAGS;
+ return !rootState.ignoreReindexFlags;
}
// reindex in the case this is a new node, even though the reindex flag
// might be set to 'false' (possible via content import)
@@ -472,6 +476,7 @@ public class IndexUpdate implements Edit
final String async;
final NodeState root;
final CommitInfo commitInfo;
+ private boolean ignoreReindexFlags = IGNORE_REINDEX_FLAGS;
/**
* Callback for the update events of the indexing job
*/
@@ -562,6 +567,10 @@ public class IndexUpdate implements Edit
this.missingProvider = missingProvider;
}
+ void setIgnoreReindexFlags(boolean ignoreReindexFlags) {
+ this.ignoreReindexFlags = ignoreReindexFlags;
+ }
+
private class CountingCallback implements ContextAwareCallback, IndexingContext {
final String indexPath;
final boolean reindex;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java?rev=1772145&r1=1772144&r2=1772145&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java Thu Dec 1 04:47:29 2016
@@ -45,6 +45,8 @@ public class IndexUpdateProvider impleme
private CorruptIndexHandler corruptIndexHandler = CorruptIndexHandler.NOOP;
+ private boolean ignoreReindexFlags = IndexUpdate.IGNORE_REINDEX_FLAGS;
+
public IndexUpdateProvider(IndexEditorProvider provider, boolean failOnMissingIndexProvider) {
this(provider, null, failOnMissingIndexProvider);
}
@@ -68,10 +70,15 @@ public class IndexUpdateProvider impleme
IndexUpdate editor = new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK, info, corruptIndexHandler)
.withMissingProviderStrategy(missingStrategy);
+ editor.setIgnoreReindexFlags(ignoreReindexFlags);
return VisibleEditor.wrap(editor);
}
public void setCorruptIndexHandler(CorruptIndexHandler corruptIndexHandler) {
this.corruptIndexHandler = corruptIndexHandler;
}
+
+ public void setIgnoreReindexFlags(boolean ignoreReindexFlags) {
+ this.ignoreReindexFlags = ignoreReindexFlags;
+ }
}
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=1772145&r1=1772144&r2=1772145&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 Dec 1 04:47:29 2016
@@ -663,7 +663,44 @@ public class IndexUpdateTest {
assertNotNull(provider.getContext(indexPath));
}
+ @Test
+ public void ignoreReindexingFlag() throws Exception{
+ String indexPath = "/oak:index/rootIndex";
+ CallbackCapturingProvider provider = new CallbackCapturingProvider();
+ IndexUpdateProvider indexUpdate = new IndexUpdateProvider(provider);
+ EditorHook hook = new EditorHook(indexUpdate);
+
+ NodeState before = builder.getNodeState();
+ createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
+ "rootIndex", true, false, ImmutableSet.of("foo"), null);
+
+ builder.child("a").setProperty("foo", "abc");
+ NodeState after = builder.getNodeState();
+
+ NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY);
+ assertTrue(provider.getContext(indexPath).isReindexing());
+
+ before = indexed;
+ builder = before.builder();
+ builder.child("b").setProperty("foo", "xyz");
+ child(builder, indexPath).setProperty(IndexConstants.REINDEX_PROPERTY_NAME, true);
+ after = builder.getNodeState();
+
+ provider.reset();
+ indexed = hook.processCommit(before, after, CommitInfo.EMPTY);
+ assertTrue(provider.getContext(indexPath).isReindexing());
+
+ //Now set IndexUpdate to ignore the reindex flag
+ indexUpdate.setIgnoreReindexFlags(true);
+ indexed = hook.processCommit(before, after, CommitInfo.EMPTY);
+ assertFalse(provider.getContext(indexPath).isReindexing());
+
+ //Despite reindex flag set to true and reindexing not done new
+ //content should still get picked up
+ PropertyIndexLookup lookup = new PropertyIndexLookup(indexed);
+ assertFalse(find(lookup, "foo", "xyz").isEmpty());
+ }
private static void markCorrupt(NodeBuilder builder, String indexName) {
builder.getChildNode(INDEX_DEFINITIONS_NAME).getChildNode(indexName)