diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/ContextAwareCallback.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/ContextAwareCallback.java
new file mode 100644
index 0000000..330cb8b
--- /dev/null
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/ContextAwareCallback.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.plugins.index;
+
+/**
+ * Extension to IndexUpdateCallback which also provides access to
+ * {@link IndexingContext}
+ */
+public interface ContextAwareCallback extends IndexUpdateCallback {
+
+    IndexingContext getIndexingContext();
+}
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java
index 151ef36..0d60112 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java
@@ -40,6 +40,11 @@ public interface IndexEditorProvider {
      * The {@code definition} builder must points to the index definition
      * node under which the indexer is expected to store the index content.
      * </p>
+     *
+     * <p>
+     * The <code>callback</code> instance may be of type {@link ContextAwareCallback}
+     * and that can be used to access {@link IndexingContext}
+     * </p>
      * 
      * @param type  index type
      * @param definition index definition node builder, used for updates
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
index b19b38e..afd4537 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
@@ -54,6 +54,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
 import org.apache.jackrabbit.oak.spi.commit.ProgressNotificationEditor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -125,10 +126,17 @@ public class IndexUpdate implements Editor {
             IndexEditorProvider provider, String async,
             NodeState root, NodeBuilder builder,
             IndexUpdateCallback updateCallback) {
+        this(provider, async, root, builder, updateCallback, CommitInfo.EMPTY);
+    }
+
+    public IndexUpdate(
+            IndexEditorProvider provider, String async,
+            NodeState root, NodeBuilder builder,
+            IndexUpdateCallback updateCallback, CommitInfo commitInfo) {
         this.parent = null;
         this.name = null;
         this.path = "/";
-        this.rootState = new IndexUpdateRootState(provider, async, root, updateCallback);
+        this.rootState = new IndexUpdateRootState(provider, async, root, updateCallback, commitInfo);
         this.builder = checkNotNull(builder);
     }
 
@@ -408,6 +416,7 @@ public class IndexUpdate implements Editor {
         final IndexEditorProvider provider;
         final String async;
         final NodeState root;
+        final CommitInfo commitInfo;
         /**
          * Callback for the update events of the indexing job
          */
@@ -416,15 +425,17 @@ public class IndexUpdate implements Editor {
         final Map<String, CountingCallback> callbacks = Maps.newHashMap();
 
         private IndexUpdateRootState(IndexEditorProvider provider, String async, NodeState root,
-                                     IndexUpdateCallback updateCallback) {
+                                     IndexUpdateCallback updateCallback, CommitInfo commitInfo) {
             this.provider = checkNotNull(provider);
             this.async = async;
             this.root = checkNotNull(root);
             this.updateCallback = checkNotNull(updateCallback);
+            this.commitInfo = commitInfo;
         }
 
         public IndexUpdateCallback newCallback(String indexPath, boolean reindex) {
-            CountingCallback cb = new CountingCallback(indexPath, reindex);
+            IndexingContext context = new DefaultIndexingContext(indexPath, reindex, commitInfo);
+            CountingCallback cb = new CountingCallback(indexPath, reindex, context);
             callbacks.put(cb.indexName, cb);
             return cb;
         }
@@ -467,15 +478,17 @@ public class IndexUpdate implements Editor {
             return !reindexedIndexes.isEmpty();
         }
 
-        private class CountingCallback implements IndexUpdateCallback {
+        private class CountingCallback implements ContextAwareCallback {
             final String indexName;
             final boolean reindex;
             final Stopwatch watch = Stopwatch.createStarted();
             int count;
+            final IndexingContext indexingContext;
 
-            private CountingCallback(String indexName, boolean reindex) {
+            private CountingCallback(String indexName, boolean reindex, IndexingContext indexingContext) {
                 this.indexName = indexName;
                 this.reindex = reindex;
+                this.indexingContext = indexingContext;
             }
 
             @Override
@@ -493,6 +506,39 @@ public class IndexUpdate implements Editor {
                 String reindexMarker = reindex ? "*" : "";
                 return indexName + reindexMarker + "(" + count + ")";
             }
+
+            @Override
+            public IndexingContext getIndexingContext() {
+                return indexingContext;
+            }
+        }
+    }
+
+    private static class DefaultIndexingContext implements IndexingContext {
+        private final String indexPath;
+        private final boolean reindex;
+        private final CommitInfo commitInfo;
+
+        private DefaultIndexingContext(String indexPath, boolean reindex,
+                                       CommitInfo commitInfo) {
+            this.indexPath = indexPath;
+            this.reindex = reindex;
+            this.commitInfo = commitInfo;
+        }
+
+        @Override
+        public String getIndexPath() {
+            return indexPath;
+        }
+
+        @Override
+        public CommitInfo getCommitInfo() {
+            return commitInfo;
+        }
+
+        @Override
+        public boolean isReindexing() {
+            return reindex;
         }
     }
 
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java
index 78a3cb7..b03ee18 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java
@@ -64,7 +64,7 @@ public class IndexUpdateProvider implements EditorProvider {
             NodeState before, NodeState after,
             NodeBuilder builder, CommitInfo info) {
 
-        IndexUpdate editor = new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK)
+        IndexUpdate editor = new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK, info)
                 .withMissingProviderStrategy(missingStrategy);
         return VisibleEditor.wrap(editor);
     }
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexingContext.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexingContext.java
new file mode 100644
index 0000000..db5d3cb
--- /dev/null
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexingContext.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.plugins.index;
+
+import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+
+public interface IndexingContext {
+
+    /**
+     * Path of the index definition in the repository
+     * @return index path in the repository
+     */
+    String getIndexPath();
+
+    /**
+     * Commit info associated with commit as part of which
+     * IndexEditor is being invoked
+     */
+    CommitInfo getCommitInfo();
+
+    /**
+     * Flag indicating that index is being reindex
+     */
+    boolean isReindexing();
+}
