From b0107843c41d1d82e7631f2d5557e67c73c6e51b Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Thu, 18 Jul 2013 09:40:21 -0700 Subject: [PATCH] update unsafetruncate -> unsafesystem patch by Christian Spriegel and jbellis for CASSANDRA-5704 --- CHANGES.txt | 2 +- .../org/apache/cassandra/db/DefsTable.java | 12 +++--------- .../org/apache/cassandra/db/SystemTable.java | 19 ++++--------------- 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 4886aa42c7..253c649627 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,5 +1,5 @@ 1.2.7 - * add cassandra.unsafetruncate property (CASSANDRA-5704) + * add cassandra.unsafesystem property (CASSANDRA-5704) * (Hadoop) quote identifiers in CqlPagingRecordReader (CASSANDRA-5763) * Add replace_node functionality for vnodes (CASSANDRA-5337) * Add timeout events to query traces (CASSANDRA-5520) diff --git a/src/java/org/apache/cassandra/db/DefsTable.java b/src/java/org/apache/cassandra/db/DefsTable.java index b96205d9d7..ea15cd0df2 100644 --- a/src/java/org/apache/cassandra/db/DefsTable.java +++ b/src/java/org/apache/cassandra/db/DefsTable.java @@ -44,7 +44,6 @@ import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.utils.ByteBufferUtil; -import org.apache.cassandra.utils.FBUtilities; /** * SCHEMA_{KEYSPACES, COLUMNFAMILIES, COLUMNS}_CF are used to store Keyspace/ColumnFamily attributes to make schema @@ -620,14 +619,9 @@ public class DefsTable private static void flushSchemaCFs() { - flushSchemaCF(SystemTable.SCHEMA_KEYSPACES_CF); - flushSchemaCF(SystemTable.SCHEMA_COLUMNFAMILIES_CF); - flushSchemaCF(SystemTable.SCHEMA_COLUMNS_CF); - } - - private static void flushSchemaCF(String cfName) - { - FBUtilities.waitOnFuture(SystemTable.schemaCFS(cfName).forceFlush()); + SystemTable.forceBlockingFlush(SystemTable.SCHEMA_KEYSPACES_CF); + SystemTable.forceBlockingFlush(SystemTable.SCHEMA_COLUMNFAMILIES_CF); + SystemTable.forceBlockingFlush(SystemTable.SCHEMA_COLUMNS_CF); } private static ByteBuffer toUTF8Bytes(UUID version) diff --git a/src/java/org/apache/cassandra/db/SystemTable.java b/src/java/org/apache/cassandra/db/SystemTable.java index 1d9fd729cb..4c74df55d8 100644 --- a/src/java/org/apache/cassandra/db/SystemTable.java +++ b/src/java/org/apache/cassandra/db/SystemTable.java @@ -185,8 +185,7 @@ public class SystemTable { String req = "UPDATE system.%s SET truncated_at = truncated_at + %s WHERE key = '%s'"; processInternal(String.format(req, LOCAL_CF, truncationAsMapEntry(cfs, truncatedAt, position), LOCAL_KEY)); - if (!Boolean.getBoolean("cassandra.unsafetruncate")) - forceBlockingFlush(LOCAL_CF); + forceBlockingFlush(LOCAL_CF); } /** @@ -347,20 +346,10 @@ public class SystemTable return tokens; } - private static void forceBlockingFlush(String cfname) + public static void forceBlockingFlush(String cfname) { - try - { - Table.open(Table.SYSTEM_KS).getColumnFamilyStore(cfname).forceBlockingFlush(); - } - catch (ExecutionException e) - { - throw new RuntimeException(e); - } - catch (InterruptedException e) - { - throw new AssertionError(e); - } + if (!Boolean.getBoolean("cassandra.unsafesystem")) + FBUtilities.waitOnFuture(Table.open(Table.SYSTEM_KS).getColumnFamilyStore(cfname).forceFlush()); } /**