diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
index 8c34f99..4cec502 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
@@ -43,6 +43,7 @@ import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
 import org.apache.jackrabbit.oak.spi.commit.EditorDiff;
 import org.apache.jackrabbit.oak.spi.commit.EditorHook;
+import org.apache.jackrabbit.oak.spi.commit.VisibleEditor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
@@ -281,7 +282,7 @@ public class AsyncIndexUpdate implements Runnable {
             IndexUpdate indexUpdate =
                     new IndexUpdate(provider, name, after, builder, callback);
             CommitFailedException exception =
-                    EditorDiff.process(indexUpdate, before, after);
+                    EditorDiff.process(VisibleEditor.wrap(indexUpdate), before, after);
             if (exception != null) {
                 throw exception;
             }
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 914f23f..91e3164 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
@@ -28,7 +28,6 @@ import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_ASY
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.MISSING_NODE;
-import static org.apache.jackrabbit.oak.spi.commit.VisibleEditor.wrap;
 
 import java.util.HashMap;
 import java.util.List;
@@ -159,10 +158,10 @@ public class IndexUpdate implements Editor {
                         for (String rm : definition.getChildNodeNames()) {
                             definition.getChildNode(rm).remove();
                         }
-                        reindex.put(concat(getPath(), INDEX_DEFINITIONS_NAME, name), wrap(editor));
+                        reindex.put(concat(getPath(), INDEX_DEFINITIONS_NAME, name), editor);
                     }
                 } else {
-                    editors.add(wrap(editor));
+                    editors.add(editor);
                 }
             }
         }
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 48940d3..89380bf 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
@@ -22,6 +22,7 @@ import javax.annotation.Nonnull;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
+import org.apache.jackrabbit.oak.spi.commit.VisibleEditor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
@@ -53,7 +54,7 @@ public class IndexUpdateProvider implements EditorProvider {
     public Editor getRootEditor(
             NodeState before, NodeState after,
             NodeBuilder builder, CommitInfo info) {
-        return new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK);
+        return VisibleEditor.wrap(new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK));
     }
 
 }
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleEditor.java oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleEditor.java
index 67ae83a..4f5bf9f 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleEditor.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleEditor.java
@@ -35,7 +35,7 @@ public class VisibleEditor implements Editor {
 
     @CheckForNull
     public static Editor wrap(@CheckForNull Editor editor) {
-        if (editor != null) {
+        if (editor != null && !(editor instanceof VisibleEditor)) {
             return new VisibleEditor(editor);
         } else {
             return null;
