Repository: cassandra Updated Branches: refs/heads/trunk 26976160e -> 3c00a0674
Prepend "dropped"/"truncated" to pre-drop/truncate snapshot names Patch by Geoffrey Yu; reviewed by Tyler Hobbs for CASSANDRA-12178 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3c00a067 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3c00a067 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3c00a067 Branch: refs/heads/trunk Commit: 3c00a0674a4e8b71ae25439dc2a0dece2f460d21 Parents: 2697616 Author: Geoffrey Yu <geoffrey...@apple.com> Authored: Thu Jul 14 17:39:27 2016 -0500 Committer: Tyler Hobbs <tylerlho...@gmail.com> Committed: Thu Jul 14 17:39:27 2016 -0500 ---------------------------------------------------------------------- CHANGES.txt | 2 ++ NEWS.txt | 3 +++ src/java/org/apache/cassandra/config/Schema.java | 4 ++-- src/java/org/apache/cassandra/db/ColumnFamilyStore.java | 5 ++++- src/java/org/apache/cassandra/db/Keyspace.java | 5 +++++ 5 files changed, 16 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3c00a067/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 0d1557b..ec4be3e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,6 @@ 3.10 + * Prepend snapshot name with "truncated" or "dropped" when a snapshot + is taken before truncating or dropping a table (CASSANDRA-12178) * Optimize RestrictionSet (CASSANDRA-12153) * cqlsh does not automatically downgrade CQL version (CASSANDRA-12150) * Omit (de)serialization of state variable in UDAs (CASSANDRA-9613) http://git-wip-us.apache.org/repos/asf/cassandra/blob/3c00a067/NEWS.txt ---------------------------------------------------------------------- diff --git a/NEWS.txt b/NEWS.txt index fd6f005..56fb8cf 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -29,6 +29,9 @@ New features testing and, as a consequence, it is not guaranteed to work in all cases. See CASSANDRA-12150 for more details. + - Snapshots that are automatically taken before a table is dropped or truncated + will have a "dropped" or "truncated" prefix on their snapshot tag name. + Upgrading --------- - Nothing specific to 3.10 but please see previous versions upgrading section, http://git-wip-us.apache.org/repos/asf/cassandra/blob/3c00a067/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 47d8198..dd42779 100644 --- a/src/java/org/apache/cassandra/config/Schema.java +++ b/src/java/org/apache/cassandra/config/Schema.java @@ -611,7 +611,7 @@ public class Schema public void dropKeyspace(String ksName) { KeyspaceMetadata ksm = Schema.instance.getKSMetaData(ksName); - String snapshotName = Keyspace.getTimestampedSnapshotName(ksName); + String snapshotName = Keyspace.getTimestampedSnapshotNameWithPrefix(ksName, ColumnFamilyStore.SNAPSHOT_DROP_PREFIX); CompactionManager.instance.interruptCompactionFor(ksm.tablesAndViews(), true); @@ -690,7 +690,7 @@ public class Schema CompactionManager.instance.interruptCompactionFor(Collections.singleton(cfm), true); if (DatabaseDescriptor.isAutoSnapshot()) - cfs.snapshot(Keyspace.getTimestampedSnapshotName(cfs.name)); + cfs.snapshot(Keyspace.getTimestampedSnapshotNameWithPrefix(cfs.name, ColumnFamilyStore.SNAPSHOT_DROP_PREFIX)); Keyspace.open(ksName).dropCf(cfm.cfId); MigrationManager.instance.notifyDropColumnFamily(cfm); http://git-wip-us.apache.org/repos/asf/cassandra/blob/3c00a067/src/java/org/apache/cassandra/db/ColumnFamilyStore.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 0a3ad52..938ea32 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -186,6 +186,9 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean private static final String SAMPLING_RESULTS_NAME = "SAMPLING_RESULTS"; private static final CompositeType SAMPLING_RESULT; + public static final String SNAPSHOT_TRUNCATE_PREFIX = "truncated"; + public static final String SNAPSHOT_DROP_PREFIX = "dropped"; + static { try @@ -2158,7 +2161,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean data.notifyTruncated(truncatedAt); if (DatabaseDescriptor.isAutoSnapshot()) - snapshot(Keyspace.getTimestampedSnapshotName(name)); + snapshot(Keyspace.getTimestampedSnapshotNameWithPrefix(name, SNAPSHOT_TRUNCATE_PREFIX)); discardSSTables(truncatedAt); http://git-wip-us.apache.org/repos/asf/cassandra/blob/3c00a067/src/java/org/apache/cassandra/db/Keyspace.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/Keyspace.java b/src/java/org/apache/cassandra/db/Keyspace.java index 6e44308..37ed1e1 100644 --- a/src/java/org/apache/cassandra/db/Keyspace.java +++ b/src/java/org/apache/cassandra/db/Keyspace.java @@ -263,6 +263,11 @@ public class Keyspace return snapshotName; } + public static String getTimestampedSnapshotNameWithPrefix(String clientSuppliedName, String prefix) + { + return prefix + "-" + getTimestampedSnapshotName(clientSuppliedName); + } + /** * Check whether snapshots already exists for a given name. *