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;


Reply via email to