diff --git oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java
index 241cd04..640a80f 100644
--- oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java
+++ oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java
@@ -85,6 +85,7 @@ public class NRTIndex implements Closeable {
     private DirectoryReader dirReader;
     private boolean closed;
     private List<LuceneIndexReader> readers;
+    private List<DirectoryReader> openReaders = Lists.newArrayList();
 
     public NRTIndex(IndexDefinition definition, IndexCopier indexCopier,
                     IndexUpdateListener refreshPolicy, @Nullable NRTIndex previous,
@@ -154,6 +155,7 @@ public class NRTIndex implements Closeable {
             //TODO Close call can possibly be speeded up by
             //avoiding merge and dropping stuff in memory. To be explored
             //indexWrite.close(waitForMerges)
+            closeOpenReaders();
             indexWriter.close();
             sizeHisto.update(dirSize(directory));
             directory.close();
@@ -186,6 +188,12 @@ public class NRTIndex implements Closeable {
         return indexDir;
     }
 
+    private void closeOpenReaders() throws IOException {
+        for (DirectoryReader reader : openReaders) {
+            reader.close();
+        }
+    }
+
     /**
      * If index was updated then a new reader would be returned otherwise
      * existing reader would be returned
@@ -205,11 +213,14 @@ public class NRTIndex implements Closeable {
             //stale result
             if (dirReader == null) {
                 result = DirectoryReader.open(indexWriter, false);
+                openReaders.add(result);
             } else {
                 DirectoryReader newReader = DirectoryReader.openIfChanged(dirReader, indexWriter, false);
                 if (newReader != null) {
                     result = newReader;
+                    openReaders.add(newReader);
                 }
+                //TODO Purge old readers
             }
             ctx.stop();
             return result;
