Author: chetanm
Date: Fri May 12 07:08:00 2017
New Revision: 1794934
URL: http://svn.apache.org/viewvc?rev=1794934&view=rev
Log:
OAK-6194 - Pass the checkpoint time as part of CommitInfo in AsyncIndexUpdate
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java?rev=1794934&r1=1794933&r2=1794934&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
Fri May 12 07:08:00 2017
@@ -710,8 +710,10 @@ public class AsyncIndexUpdate implements
markFailingIndexesAsCorrupt(builder);
+ CommitInfo info = new CommitInfo(CommitInfo.OAK_UNKNOWN,
CommitInfo.OAK_UNKNOWN,
+ ImmutableMap.of(IndexConstants.CHECKPOINT_CREATION_TIME,
afterTime));
indexUpdate =
- new IndexUpdate(provider, name, after, builder, callback,
callback, CommitInfo.EMPTY, corruptIndexHandler)
+ new IndexUpdate(provider, name, after, builder, callback,
callback, info, corruptIndexHandler)
.withMissingProviderStrategy(missingStrategy);
CommitFailedException exception =
EditorDiff.process(VisibleEditor.wrap(indexUpdate),
before, after);
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java?rev=1794934&r1=1794933&r2=1794934&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexConstants.java
Fri May 12 07:08:00 2017
@@ -83,4 +83,13 @@ public interface IndexConstants {
* corrupt
*/
String CORRUPT_PROPERTY_NAME = "corrupt";
+
+ /**
+ * CommitInfo attribute name which refers to the time at which
+ * async index checkpoint is created i.e. time upto which repository
+ * state is being indexed in given indexing cycle.
+ *
+ * The time is in string for as per Type.DATE
+ */
+ String CHECKPOINT_CREATION_TIME = "indexingCheckpointTime";
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java?rev=1794934&r1=1794933&r2=1794934&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
Fri May 12 07:08:00 2017
@@ -1814,6 +1814,29 @@ public class AsyncIndexUpdateTest {
assertEquals(1, stats.getUpdates());
}
+ @Test
+ public void startTimePresentInCommitInfo() throws Exception{
+ MemoryNodeStore store = new MemoryNodeStore();
+
+ NodeBuilder builder = store.getRoot().builder();
+ createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
+ "fooIndex", true, false, ImmutableSet.of("foo"), null)
+ .setProperty(ASYNC_PROPERTY_NAME, "async");
+ builder.child("testRoot1").setProperty("foo", "abc");
+
+ // merge it back in
+ store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+
+ IndexingContextCapturingProvider provider = new
IndexingContextCapturingProvider();
+ AsyncIndexUpdate async = new AsyncIndexUpdate("async", store,
provider);
+ async.run();
+
+ assertNotNull(provider.lastIndexingContext);
+ CommitInfo info = provider.lastIndexingContext.getCommitInfo();
+ String indexStartTime = (String)
info.getInfo().get(IndexConstants.CHECKPOINT_CREATION_TIME);
+ assertNotNull(indexStartTime);
+ }
+
private static class TestIndexEditorProvider extends
PropertyIndexEditorProvider {
private String indexPathToFail;
@Override
@@ -1837,6 +1860,16 @@ public class AsyncIndexUpdateTest {
}
}
+ private static class IndexingContextCapturingProvider extends
PropertyIndexEditorProvider {
+ IndexingContext lastIndexingContext;
+ @Override
+ public Editor getIndexEditor(@Nonnull String type, @Nonnull
NodeBuilder definition, @Nonnull NodeState root,
+ @Nonnull IndexUpdateCallback callback) {
+ lastIndexingContext =
((ContextAwareCallback)callback).getIndexingContext();
+ return super.getIndexEditor(type, definition, root, callback);
+ }
+ }
+
private static class CollectingValidatorProvider extends ValidatorProvider
{
final Set<String> visitedPaths = Sets.newHashSet();