diff --git a/src/java/org/apache/cassandra/db/DefsTable.java b/src/java/org/apache/cassandra/db/DefsTable.java index ea15cd0df2..4e9cf0151d 100644 --- a/src/java/org/apache/cassandra/db/DefsTable.java +++ b/src/java/org/apache/cassandra/db/DefsTable.java @@ -341,6 +341,10 @@ public class DefsTable for (RowMutation mutation : mutations) mutation.apply(); + // Must be called after each schema pull and not just on startup to guarantee the migration. + // See CASSANDRA-5800 comments for the details. + SystemTable.migrateKeyAlias(); + if (!StorageService.instance.isClientMode()) flushSchemaCFs(); diff --git a/src/java/org/apache/cassandra/db/SystemTable.java b/src/java/org/apache/cassandra/db/SystemTable.java index 81e675e413..a87ab50183 100644 --- a/src/java/org/apache/cassandra/db/SystemTable.java +++ b/src/java/org/apache/cassandra/db/SystemTable.java @@ -184,11 +184,10 @@ public class SystemTable migrateKeyAlias(); } - /** * 1.1 used a key_alias column; 1.2 changed that to key_aliases as part of CQL3 */ - private static void migrateKeyAlias() + public static void migrateKeyAlias() { String selectQuery = String.format("SELECT keyspace_name, columnfamily_name, writetime(type), key_aliases, key_alias FROM %s.%s", Table.SYSTEM_KS,