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();
 


Reply via email to