This is an automated email from the ASF dual-hosted git repository.

adelapena pushed a commit to branch cassandra-3.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-3.0 by this push:
     new 0700dfa  Check SSTables for latest version before dropping compact 
storage
0700dfa is described below

commit 0700dfa0bc26d0758df898101bb595d3ec8d7def
Author: Ekaterina Dimitrova <[email protected]>
AuthorDate: Tue Oct 13 15:42:51 2020 +0100

    Check SSTables for latest version before dropping compact storage
    
    patch by Ekaterina Dimitrova; reviewed by Andrés de la Peña and Sylvain 
Lebresne for CASSANDRA-16063
---
 CHANGES.txt                                                      | 1 +
 .../apache/cassandra/cql3/statements/AlterTableStatement.java    | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/CHANGES.txt b/CHANGES.txt
index 1dd52c2..0f9694e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.23:
+ * Check SSTables for latest version before dropping compact storage 
(CASSANDRA-16063)
  * Handle unexpected columns due to schema races (CASSANDRA-15899)
  * Avoid failing compactions with very large partitions (CASSANDRA-15164)
  * Use IF NOT EXISTS for index and UDT create statements in snapshot schema 
files (CASSANDRA-13935)
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
index 193c24c..31c8e8f 100644
--- a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
@@ -34,6 +34,7 @@ import org.apache.cassandra.db.marshal.BytesType;
 import org.apache.cassandra.db.marshal.EmptyType;
 import org.apache.cassandra.db.view.View;
 import org.apache.cassandra.exceptions.*;
+import org.apache.cassandra.io.sstable.format.SSTableReader;
 import org.apache.cassandra.schema.IndexMetadata;
 import org.apache.cassandra.schema.Indexes;
 import org.apache.cassandra.schema.TableParams;
@@ -277,6 +278,14 @@ public class AlterTableStatement extends 
SchemaAlteringStatement
                 if (!meta.isCompactTable())
                     throw new InvalidRequestException("Cannot DROP COMPACT 
STORAGE on table without COMPACT STORAGE");
 
+                // TODO: Global check of the sstables to be added as part of 
CASSANDRA-15897.
+                // Currently this is only a local check of the SSTables 
versions
+                for (SSTableReader ssTableReader : 
Keyspace.open(keyspace()).getColumnFamilyStore(columnFamily()).getLiveSSTables())
+                {
+                    if (!ssTableReader.descriptor.version.isLatestVersion())
+                        throw new InvalidRequestException("Cannot DROP COMPACT 
STORAGE until all SSTables are upgraded, please run `nodetool upgradesstables` 
first.");
+                }
+
                 cfm = meta.asNonCompact();
                 break;
             case OPTS:


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to