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 2014/11/05 07:04:17 UTC
svn commit: r1636799 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
Author: chetanm
Date: Wed Nov 5 06:04:17 2014
New Revision: 1636799
URL: http://svn.apache.org/r1636799
Log:
OAK-2253 - Index node only if configured property changed
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java?rev=1636799&r1=1636798&r2=1636799&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java Wed Nov 5 06:04:17 2014
@@ -176,19 +176,19 @@ public class LuceneIndexEditor implement
@Override
public void propertyAdded(PropertyState after) {
- markPropertiesChanged();
+ markPropertyChanged(after.getName());
checkForRelativePropertyChange(after.getName());
}
@Override
public void propertyChanged(PropertyState before, PropertyState after) {
- markPropertiesChanged();
+ markPropertyChanged(before.getName());
checkForRelativePropertyChange(before.getName());
}
@Override
public void propertyDeleted(PropertyState before) {
- markPropertiesChanged();
+ markPropertyChanged(before.getName());
checkForRelativePropertyChange(before.getName());
}
@@ -505,7 +505,7 @@ public class LuceneIndexEditor implement
}
if (p != null) {
- p.markPropertiesChanged();
+ p.relativePropertyChanged();
}
}
}
@@ -517,7 +517,13 @@ public class LuceneIndexEditor implement
return changedRelativeProps;
}
- private void markPropertiesChanged() {
+ private void markPropertyChanged(String name) {
+ if (!propertiesChanged && context.getDefinition().includeProperty(name)) {
+ propertiesChanged = true;
+ }
+ }
+
+ private void relativePropertyChanged() {
propertiesChanged = true;
}
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java?rev=1636799&r1=1636798&r2=1636799&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java Wed Nov 5 06:04:17 2014
@@ -153,6 +153,46 @@ public class LuceneIndexEditorTest {
assertEquals(2, getSearcher().getIndexReader().numDocs());
}
+ /**
+ * 1. Index property foo in /test
+ * 2. Then modify some other property in /test
+ *
+ * This should not cause the index to be updated
+ */
+ @Test
+ public void nonIncludedPropertyChange() throws Exception {
+ NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME);
+ NodeBuilder nb = newLuceneIndexDefinition(index, "lucene",
+ of(TYPENAME_STRING));
+ nb.setProperty(LuceneIndexConstants.FULL_TEXT_ENABLED, false);
+ nb.setProperty(createProperty(INCLUDE_PROPERTY_NAMES, of("foo"),
+ STRINGS));
+
+ NodeState before = builder.getNodeState();
+ builder.child("test").setProperty("foo", "fox is jumping");
+ builder.child("test2").setProperty("foo", "bird is chirping");
+ NodeState after = builder.getNodeState();
+
+ NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY);
+ tracker.update(indexed);
+
+ assertEquals(2, getSearcher().getIndexReader().numDocs());
+
+ assertEquals("/test", getPath(new TermQuery(new Term("foo", "fox is jumping"))));
+
+ releaseIndexNode();
+ before = indexed;
+ builder = before.builder();
+ builder.child("test").setProperty("bar", "kite is flying");
+ after = builder.getNodeState();
+ indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY);
+ tracker.update(indexed);
+
+ assertEquals(2, getSearcher().getIndexReader().numDocs());
+ assertEquals("change in non included property should not cause " +
+ "index update",0, getSearcher().getIndexReader().numDeletedDocs());
+ }
+
@Test
public void testLuceneWithRelativeProperty() throws Exception {
NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME);