Author: xedin Date: Thu Nov 24 20:54:10 2011 New Revision: 1205977 URL: http://svn.apache.org/viewvc?rev=1205977&view=rev Log: fix ConcurrentModificationException in Table.all() patch by Jonathan Ellis; reviewed by Pavel Yaskevich for CASSANDRA-3529
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/config/Schema.java Modified: cassandra/branches/cassandra-1.0/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1205977&r1=1205976&r2=1205977&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/CHANGES.txt (original) +++ cassandra/branches/cassandra-1.0/CHANGES.txt Thu Nov 24 20:54:10 2011 @@ -15,7 +15,7 @@ Merged from 0.8: * fix array out of bounds error in counter shard removal (CASSANDRA-3514) * avoid dropping tombstones when they might still be needed to shadow data in a different sstable (CASSANDRA-2786) - + * fix ConcurrentModificationException in Table.all() (CASSANDRA-3529) 1.0.3 * revert name-based query defragmentation aka CASSANDRA-2503 (CASSANDRA-3491) Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/config/Schema.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/config/Schema.java?rev=1205977&r1=1205976&r2=1205977&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/config/Schema.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/config/Schema.java Thu Nov 24 20:54:10 2011 @@ -49,13 +49,13 @@ public class Schema private final AtomicInteger cfIdGen = new AtomicInteger(MIN_CF_ID); /* metadata map for faster table lookup */ - private final Map<String, KSMetaData> tables; + private final Map<String, KSMetaData> tables = new NonBlockingHashMap<String, KSMetaData>(); /* Table objects, one per keyspace. Only one instance should ever exist for any given keyspace. */ - private final Map<String, Table> tableInstances; + private final Map<String, Table> tableInstances = new NonBlockingHashMap<String, Table>(); /* metadata map for faster ColumnFamily lookup */ - private final BiMap<Pair<String, String>, Integer> cfIdMap; + private final BiMap<Pair<String, String>, Integer> cfIdMap = HashBiMap.create(); private volatile UUID version; @@ -65,9 +65,6 @@ public class Schema */ public Schema(UUID initialVersion) { - tables = new HashMap<String, KSMetaData>(); - tableInstances = new NonBlockingHashMap<String, Table>(); - cfIdMap = HashBiMap.create(); version = initialVersion; }