You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2016/06/27 15:10:33 UTC

[2/3] cassandra git commit: Ensure new CFS is initialized before adding to schema

Ensure new CFS is initialized before adding to schema

Patch by Sam Tunnicliffe; reviewed by Aleksey Yeschenko for
CASSANDRA-12083


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2e476369
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2e476369
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2e476369

Branch: refs/heads/trunk
Commit: 2e4763691c39f1424858fcb70a0a5c2a3aeb7836
Parents: edaa693
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Fri Jun 24 11:47:25 2016 +0100
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Mon Jun 27 15:55:23 2016 +0100

----------------------------------------------------------------------
 CHANGES.txt                                      | 1 +
 src/java/org/apache/cassandra/config/Schema.java | 8 +++-----
 2 files changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e476369/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 488fde3..6b0c4f1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.8
+ * Fix potential race in schema during new table creation (CASSANDRA-12083)
  * cqlsh: fix error handling in rare COPY FROM failure scenario (CASSANDRA-12070)
  * Disable autocompaction during drain (CASSANDRA-11878)
  * Add a metrics timer to MemtablePool and use it to track time spent blocked on memory in MemtableAllocator (CASSANDRA-11327)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e476369/src/java/org/apache/cassandra/config/Schema.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Schema.java b/src/java/org/apache/cassandra/config/Schema.java
index 03d8e8b..ee1f137 100644
--- a/src/java/org/apache/cassandra/config/Schema.java
+++ b/src/java/org/apache/cassandra/config/Schema.java
@@ -644,15 +644,13 @@ public class Schema
         assert getCFMetaData(cfm.ksName, cfm.cfName) == null;
 
         // Make sure the keyspace is initialized
-        Keyspace.open(cfm.ksName);
+        // and init the new CF before switching the KSM to the new one
+        // to avoid races as in CASSANDRA-10761
+        Keyspace.open(cfm.ksName).initCf(cfm, true);
         // Update the keyspaces map with the updated metadata
         update(cfm.ksName, ks -> ks.withSwapped(ks.tables.with(cfm)));
         // Update the table ID <-> table name map (cfIdMap)
         load(cfm);
-
-        // init the new CF before switching the KSM to the new one
-        // to avoid races as in CASSANDRA-10761
-        Keyspace.open(cfm.ksName).initCf(cfm, true);
         MigrationManager.instance.notifyCreateColumnFamily(cfm);
     }