From 032a8cc1e9424c718a78e1463530d62e2e310d4a Mon Sep 17 00:00:00 2001 From: Jeff Jirsa Date: Mon, 17 Apr 2017 22:02:38 -0700 Subject: [PATCH] Write schema tables with timestamp=0 to avoid excess schema migrations Patch by Jeff Jirsa; Reviewed by Aleksey Yeschenko for CASSANDRA-13441 --- CHANGES.txt | 1 + .../org/apache/cassandra/service/MigrationManager.java | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7a860fe3e4..19cd39c5c3 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -4,6 +4,7 @@ * Avoid name clashes in CassandraIndexTest (CASSANDRA-13427) * Handling partially written hint files (CASSANDRA-12728) * Interrupt replaying hints on decommission (CASSANDRA-13308) + * Fix schema version calculation for rolling upgrades (CASSANDRA-13441) 3.0.13 * Make reading of range tombstones more reliable (CASSANDRA-12811) diff --git a/src/java/org/apache/cassandra/service/MigrationManager.java b/src/java/org/apache/cassandra/service/MigrationManager.java index 7c929e7630..aacb769235 100644 --- a/src/java/org/apache/cassandra/service/MigrationManager.java +++ b/src/java/org/apache/cassandra/service/MigrationManager.java @@ -325,10 +325,15 @@ public class MigrationManager */ public static void forceAnnounceNewColumnFamily(CFMetaData cfm) throws ConfigurationException { - announceNewColumnFamily(cfm, false, false); + announceNewColumnFamily(cfm, false, false, 0); } private static void announceNewColumnFamily(CFMetaData cfm, boolean announceLocally, boolean throwOnDuplicate) throws ConfigurationException + { + announceNewColumnFamily(cfm, announceLocally, throwOnDuplicate, FBUtilities.timestampMicros()); + } + + private static void announceNewColumnFamily(CFMetaData cfm, boolean announceLocally, boolean throwOnDuplicate, long timestamp) throws ConfigurationException { cfm.validate(); @@ -340,7 +345,7 @@ public class MigrationManager throw new AlreadyExistsException(cfm.ksName, cfm.cfName); logger.info(String.format("Create new table: %s", cfm)); - announce(SchemaKeyspace.makeCreateTableMutation(ksm, cfm, FBUtilities.timestampMicros()), announceLocally); + announce(SchemaKeyspace.makeCreateTableMutation(ksm, cfm, timestamp), announceLocally); } public static void announceNewView(ViewDefinition view, boolean announceLocally) throws ConfigurationException