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
{