Author: jbellis Date: Fri Mar 18 13:20:39 2011 New Revision: 1082910 URL: http://svn.apache.org/viewvc?rev=1082910&view=rev Log: fix race when iterating CFs during add/drop patch by jbellis; reviewed by gdusbabek for CASSANDRA-2350
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/CompactionManager.java cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java Modified: cassandra/branches/cassandra-0.7/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1082910&r1=1082909&r2=1082910&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.7/CHANGES.txt Fri Mar 18 13:20:39 2011 @@ -12,6 +12,7 @@ (CASSANDRA-2347) * ensure size calculation and write phase of large-row compaction use the same threshold for TTL expiration (CASSANDRA-2349) + * fix race when iterating CFs during add/drop (CASSANDRA-2350) 0.7.4 Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/CompactionManager.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/CompactionManager.java?rev=1082910&r1=1082909&r2=1082910&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/CompactionManager.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/CompactionManager.java Fri Mar 18 13:20:39 2011 @@ -372,8 +372,7 @@ public class CompactionManager implement { for (String ksname : DatabaseDescriptor.getNonSystemTables()) { - Table ks = Table.open(ksname); - for (ColumnFamilyStore cfs : ks.columnFamilyStores.values()) + for (ColumnFamilyStore cfs : Table.open(ksname).getColumnFamilyStores()) cfs.disableAutoCompaction(); } } Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java?rev=1082910&r1=1082909&r2=1082910&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Table.java Fri Mar 18 13:20:39 2011 @@ -23,10 +23,7 @@ import java.io.IOError; import java.io.IOException; import java.nio.ByteBuffer; import java.util.*; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -89,7 +86,7 @@ public class Table /* Table name. */ public final String name; /* ColumnFamilyStore per column family */ - public final Map<Integer, ColumnFamilyStore> columnFamilyStores = new HashMap<Integer, ColumnFamilyStore>(); // TODO make private again + private final Map<Integer, ColumnFamilyStore> columnFamilyStores = new ConcurrentHashMap<Integer, ColumnFamilyStore>(); private final Object[] indexLocks; private ScheduledFuture<?> flushTask; private volatile AbstractReplicationStrategy replicationStrategy;