Index: lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/IndexWriter.java	(revision 1564534)
+++ lucene/core/src/java/org/apache/lucene/index/IndexWriter.java	(working copy)
@@ -4643,6 +4643,14 @@
     
   }
   
+  synchronized void incRefDeleter(SegmentInfos segmentInfos) throws IOException {
+    deleter.incRef(segmentInfos, false);
+  }
+  
+  synchronized void decRefDeleter(SegmentInfos segmentInfos) throws IOException {
+    deleter.decRef(segmentInfos);
+  }
+  
   private boolean processEvents(boolean triggerMerge, boolean forcePurge) throws IOException {
     return processEvents(eventQueue, triggerMerge, forcePurge);
   }
@@ -4680,4 +4688,5 @@
      */
     void process(IndexWriter writer, boolean triggerMerge, boolean clearBuffers) throws IOException;
   }
+
 }
Index: lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java	(revision 1564534)
+++ lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java	(working copy)
@@ -107,6 +107,9 @@
           writer.readerPool.release(rld);
         }
       }
+      
+      writer.incRefDeleter(segmentInfos);
+      
       StandardDirectoryReader result = new StandardDirectoryReader(dir,
           readers.toArray(new SegmentReader[readers.size()]), writer,
           segmentInfos, applyAllDeletes);
@@ -362,6 +365,8 @@
     }
 
     if (writer != null) {
+      writer.decRefDeleter(segmentInfos);
+      
       // Since we just closed, writer may now be able to
       // delete unused files:
       writer.deletePendingFiles();

