Index: src/main/java/org/apache/jackrabbit/oak/Oak.java
===================================================================
--- src/main/java/org/apache/jackrabbit/oak/Oak.java	(revision 1409187)
+++ src/main/java/org/apache/jackrabbit/oak/Oak.java	(working copy)
@@ -24,11 +24,14 @@
 import com.google.common.collect.Lists;
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.core.MicroKernelImpl;
+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.core.ContentRepositoryImpl;
 import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
+import org.apache.jackrabbit.oak.plugins.index.IndexHookManager;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeState;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
 import org.apache.jackrabbit.oak.spi.commit.CompositeValidatorProvider;
@@ -43,6 +46,7 @@
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -188,6 +192,7 @@
         for (RepositoryInitializer initializer : initializers) {
             initializer.initialize(store);
         }
+        reindex(store);
 
         withValidatorHook();
         store.setHook(CompositeHook.compose(commitHooks));
@@ -199,6 +204,31 @@
                 securityProvider);
     }
 
+    private void reindex(KernelNodeStore store) {
+        IndexHookManager ih = null;
+        for (CommitHook c : commitHooks) {
+            if (c instanceof IndexHookManager) {
+                ih = (IndexHookManager) c;
+            }
+        }
+        if (ih == null) {
+            return;
+        }
+        long t = System.currentTimeMillis();
+        NodeStoreBranch branch = store.branch();
+        try {
+            NodeState ns = ih.processCommit(MemoryNodeState.EMPTY_NODE,
+                    branch.getRoot());
+            branch.setRoot(ns);
+            branch.merge();
+            log.debug("initial content reindex done in {} ms.",
+                    System.currentTimeMillis() - t);
+        } catch (CommitFailedException e) {
+            // TODO ignore error or throw runtime?
+            throw new RuntimeException(e);
+        }
+    }
+
     /**
      * Creates a content repository with the given configuration
      * and logs in to the default workspace with no credentials,
