diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
index bcbf9e4..859c6d4 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
@@ -334,6 +334,8 @@ public class Oak {
      */
     private Map<String, Long> asyncTasks;
 
+    private boolean failOnMissingIndexProvider;
+
     public Oak(NodeStore store) {
         this.store = checkNotNull(store);
     }
@@ -551,6 +553,11 @@ public class Oak {
         return withAsyncIndexing("async", 5);
     }
 
+    public Oak withFailOnMissingIndexProvider(){
+        failOnMissingIndexProvider = true;
+        return this;
+    }
+
     public Oak withAtomicCounter() {
         return with(new AtomicCounterEditorProvider(
             new Supplier<Clusterable>() {
@@ -673,7 +680,7 @@ public class Oak {
                 workspaceInitializers, store, defaultWorkspaceName, indexEditors);
 
         // add index hooks later to prevent the OakInitializer to do excessive indexing
-        with(new IndexUpdateProvider(indexEditors));
+        with(new IndexUpdateProvider(indexEditors, failOnMissingIndexProvider));
         withEditorHook();
 
         // Register observer last to prevent sending events while initialising
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 89380bf..78a3cb7 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
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.plugins.index;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
+import org.apache.jackrabbit.oak.plugins.index.IndexUpdate.MissingIndexProviderStrategy;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
@@ -40,21 +41,32 @@ public class IndexUpdateProvider implements EditorProvider {
 
     private final String async;
 
+    private final MissingIndexProviderStrategy missingStrategy;
+
+    public IndexUpdateProvider(IndexEditorProvider provider, boolean failOnMissingIndexProvider) {
+        this(provider, null, failOnMissingIndexProvider);
+    }
+
     public IndexUpdateProvider(IndexEditorProvider provider) {
-        this(provider, null);
+        this(provider, null, false);
     }
 
     public IndexUpdateProvider(
-            @Nonnull IndexEditorProvider provider, @CheckForNull String async) {
+            @Nonnull IndexEditorProvider provider, @CheckForNull String async, boolean failOnMissingIndexProvider) {
         this.provider = provider;
         this.async = async;
+        this.missingStrategy = new MissingIndexProviderStrategy();
+        this.missingStrategy.setFailOnMissingIndexProvider(failOnMissingIndexProvider);
     }
 
     @Override @CheckForNull
     public Editor getRootEditor(
             NodeState before, NodeState after,
             NodeBuilder builder, CommitInfo info) {
-        return VisibleEditor.wrap(new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK));
+
+        IndexUpdate editor = new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK)
+                .withMissingProviderStrategy(missingStrategy);
+        return VisibleEditor.wrap(editor);
     }
 
 }
diff --git oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java
index f62d61e..91d637d 100644
--- oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java
@@ -25,13 +25,22 @@ import java.util.concurrent.atomic.AtomicReference;
 
 import javax.jcr.NoSuchWorkspaceException;
 
+import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.api.ContentSession;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate;
+import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceEditorProvider;
+import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardIndexEditorProvider;
 import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils;
 import org.junit.Test;
 
@@ -151,4 +160,35 @@ public class OakTest {
         assertNull(WhiteboardUtils.getService(wb, AsyncIndexUpdate.class));
     }
 
+    @Test(expected = CommitFailedException.class)
+    public void checkMissingStrategySetting() throws Exception{
+        Whiteboard wb = new DefaultWhiteboard();
+        WhiteboardIndexEditorProvider wbProvider = new WhiteboardIndexEditorProvider();
+        wbProvider.start(wb);
+
+        Registration r1 = wb.register(IndexEditorProvider.class, new PropertyIndexEditorProvider(), null);
+        Registration r2 = wb.register(IndexEditorProvider.class, new ReferenceEditorProvider(), null);
+
+        Oak oak = new Oak()
+                .with(new OpenSecurityProvider())
+                .with(new InitialContent())
+                .with(wb)
+                .with(wbProvider)
+                .withFailOnMissingIndexProvider();
+
+        ContentRepository repo = oak.createContentRepository();
+
+        ContentSession cs = repo.login(null, null);
+
+        Root root = cs.getLatestRoot();
+        Tree t = root.getTree("/");
+        t.setProperty("foo", "u1", Type.REFERENCE);
+
+        r1.unregister();
+
+        root.commit();
+        cs.close();
+        ((Closeable)repo).close();
+    }
+
 }
\ No newline at end of file
