You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2011/08/31 13:59:30 UTC

svn commit: r1163589 - /lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java

Author: mikemccand
Date: Wed Aug 31 11:59:30 2011
New Revision: 1163589

URL: http://svn.apache.org/viewvc?rev=1163589&view=rev
Log:
LUCENE-3409: don't use Iterator.remove

Modified:
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java?rev=1163589&r1=1163588&r2=1163589&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java Wed Aug 31 11:59:30 2011
@@ -27,7 +27,6 @@ import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -601,20 +600,15 @@ public class IndexWriter implements Clos
     }
 
     public synchronized void dropAll() throws IOException {
-      Iterator<Map.Entry<SegmentCacheKey,SegmentReader>> iter = readerMap.entrySet().iterator();
-      while (iter.hasNext()) {
-
-        final Map.Entry<SegmentCacheKey,SegmentReader> ent = iter.next();
-
-        SegmentReader sr = ent.getValue();
-        sr.hasChanges = false;
-        iter.remove();
+      for(SegmentReader reader : readerMap.values()) {
+        reader.hasChanges = false;
 
         // NOTE: it is allowed that this decRef does not
         // actually close the SR; this can happen when a
         // near real-time reader using this SR is still open
-        sr.decRef();
+        reader.decRef();
       }
+      readerMap.clear();
     }
 
     public synchronized void drop(SegmentInfo info, IOContext.Context context) throws IOException {
@@ -633,10 +627,7 @@ public class IndexWriter implements Clos
       // sync'd on IW:
       assert Thread.holdsLock(IndexWriter.this);
 
-      Iterator<Map.Entry<SegmentCacheKey,SegmentReader>> iter = readerMap.entrySet().iterator();
-      while (iter.hasNext()) {
-
-        Map.Entry<SegmentCacheKey,SegmentReader> ent = iter.next();
+      for(Map.Entry<SegmentCacheKey,SegmentReader> ent : readerMap.entrySet()) {
 
         SegmentReader sr = ent.getValue();
         if (sr.hasChanges) {
@@ -649,14 +640,14 @@ public class IndexWriter implements Clos
           deleter.checkpoint(segmentInfos, false);
         }
 
-        iter.remove();
-
         // NOTE: it is allowed that this decRef does not
         // actually close the SR; this can happen when a
         // near real-time reader is kept open after the
         // IndexWriter instance is closed
         sr.decRef();
       }
+
+      readerMap.clear();
     }
 
     /**