Index: lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/IndexWriter.java	(revision 1527981)
+++ lucene/core/src/java/org/apache/lucene/index/IndexWriter.java	(working copy)
@@ -1550,7 +1550,9 @@
       throw new IllegalArgumentException("can only update existing numeric-docvalues fields!");
     }
     try {
-      docWriter.updateNumericDocValue(term, field, value);
+      if (docWriter.updateNumericDocValue(term, field, value)) {
+        processEvents(true, false);
+      }
     } catch (OutOfMemoryError oom) {
       handleOOM(oom, "updateNumericDocValue");
     }
Index: lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java	(revision 1527981)
+++ lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java	(working copy)
@@ -158,13 +158,11 @@
     return applyAllDeletes( deleteQueue);
   }
 
-  synchronized void updateNumericDocValue(Term term, String field, Long value) throws IOException {
+  synchronized boolean updateNumericDocValue(Term term, String field, Long value) throws IOException {
     final DocumentsWriterDeleteQueue deleteQueue = this.deleteQueue;
     deleteQueue.addNumericUpdate(new NumericUpdate(term, field, value));
     flushControl.doOnDelete();
-    if (flushControl.doApplyAllDeletes()) {
-      applyAllDeletes(deleteQueue);
-    }
+    return applyAllDeletes(deleteQueue);
   }
 
   DocumentsWriterDeleteQueue currentDeleteSession() {
