Author: jbellis
Date: Fri Mar  5 20:10:55 2010
New Revision: 919578

URL: http://svn.apache.org/viewvc?rev=919578&view=rev
Log:
use iter.remove() to avoid CME in segment discard.  patch by gabriele renzi; 
reviewed by jbellis for CASSANDRA-853

Modified:
    
incubator/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/commitlog/CommitLog.java

Modified: 
incubator/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/commitlog/CommitLog.java?rev=919578&r1=919577&r2=919578&view=diff
==============================================================================
--- 
incubator/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
 (original)
+++ 
incubator/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
 Fri Mar  5 20:10:55 2010
@@ -382,8 +382,10 @@
          * these files the header needs to modified by resetting the dirty
          * bit corresponding to the flushed CF.
         */
-        for (CommitLogSegment segment : segments)
+        Iterator<CommitLogSegment> iter = segments.iterator();
+        while (iter.hasNext())
         {
+            CommitLogSegment segment = iter.next();
             CommitLogHeader header = segment.getHeader();
             if (segment.equals(context.getSegment()))
             {
@@ -406,7 +408,7 @@
                 DeletionService.submitDelete(segment.getPath());
                 // usually this will be the first (remaining) segment, but not 
always, if segment A contains
                 // writes to a CF that is unflushed but is followed by segment 
B whose CFs are all flushed.
-                segments.remove(segment);
+                iter.remove();
             }
             else
             {


Reply via email to