This is an automated email from the ASF dual-hosted git repository.
aweisberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git
The following commit(s) were added to refs/heads/master by this push:
new 4c1479b SSTable loader exception when loading 3.0/3.11 compact tables
into 4.0
4c1479b is described below
commit 4c1479b5f457c3a8ed0302461ef79331cc13e798
Author: Dinesh A. Joshi <[email protected]>
AuthorDate: Mon Jan 14 17:39:16 2019 -0500
SSTable loader exception when loading 3.0/3.11 compact tables into 4.0
Patch by Dinesh Joshi; Reviewed by Ariel Weisberg for CASSANDRA-14895
---
dtest.py | 14 ++++++++++++--
sstable_generation_loading_test.py | 16 ++++++++++++++--
upgrade_tests/storage_engine_upgrade_test.py | 2 --
3 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/dtest.py b/dtest.py
index 9027d75..ec79771 100644
--- a/dtest.py
+++ b/dtest.py
@@ -270,6 +270,7 @@ class Tester:
except TimeoutError:
pytest.fail("Log message was not seen within
timeout:\n{0}".format(msg))
+
def get_eager_protocol_version(cassandra_version):
"""
Returns the highest protocol version accepted
@@ -288,7 +289,8 @@ def get_eager_protocol_version(cassandra_version):
# We default to UTF8Type because it's simpler to use in tests
def create_cf(session, name, key_type="varchar", speculative_retry=None,
read_repair=None, compression=None,
- gc_grace=None, columns=None, validation="UTF8Type",
compact_storage=False, compaction_strategy='SizeTieredCompactionStrategy'):
+ gc_grace=None, columns=None, validation="UTF8Type",
compact_storage=False, compaction_strategy='SizeTieredCompactionStrategy',
+ primary_key=None, clustering=None):
compaction_fragment = "compaction = {'class': '%s', 'enabled': 'true'}"
if compaction_strategy == '':
@@ -304,11 +306,17 @@ def create_cf(session, name, key_type="varchar",
speculative_retry=None, read_re
if additional_columns == "":
query = 'CREATE COLUMNFAMILY %s (key %s, c varchar, v varchar, PRIMARY
KEY(key, c)) WITH comment=\'test cf\'' % (name, key_type)
else:
- query = 'CREATE COLUMNFAMILY %s (key %s PRIMARY KEY%s) WITH
comment=\'test cf\'' % (name, key_type, additional_columns)
+ if primary_key:
+ query = 'CREATE COLUMNFAMILY %s (key %s%s, PRIMARY KEY(%s)) WITH
comment=\'test cf\'' % (name, key_type, additional_columns, primary_key)
+ else:
+ query = 'CREATE COLUMNFAMILY %s (key %s PRIMARY KEY%s) WITH
comment=\'test cf\'' % (name, key_type, additional_columns)
if compaction_fragment is not None:
query = '%s AND %s' % (query, compaction_fragment)
+ if clustering:
+ query = '%s AND CLUSTERING ORDER BY (%s)' % (query, clustering)
+
if compression is not None:
query = '%s AND compression = { \'sstable_compression\':
\'%sCompressor\' }' % (query, compression)
else:
@@ -333,6 +341,7 @@ def create_cf(session, name, key_type="varchar",
speculative_retry=None, read_re
#Going to ignore OperationTimedOut from create CF, so need to validate it
was indeed created
session.execute('SELECT * FROM %s LIMIT 1' % name);
+
def create_cf_simple(session, name, query):
try:
retry_till_success(session.execute, query=query, timeout=120,
bypassed_exception=cassandra.OperationTimedOut)
@@ -342,6 +351,7 @@ def create_cf_simple(session, name, query):
#Going to ignore OperationTimedOut from create CF, so need to validate it
was indeed created
session.execute('SELECT * FROM %s LIMIT 1' % name)
+
def create_ks(session, name, rf):
query = 'CREATE KEYSPACE %s WITH replication={%s}'
if isinstance(rf, int):
diff --git a/sstable_generation_loading_test.py
b/sstable_generation_loading_test.py
index 901011d..119f078 100644
--- a/sstable_generation_loading_test.py
+++ b/sstable_generation_loading_test.py
@@ -43,6 +43,14 @@ class TestBaseSStableLoader(Tester):
if self.__class__.__name__ != 'TestBasedSSTableLoader' and
self.upgrade_from is None:
pytest.skip("Don't need to run base class test, only derived
classes")
+ def create_schema_40(self, session, ks, compression):
+ create_ks(session, ks, rf=2)
+ create_cf(session, "standard1", compression=compression,
compact_storage=self.compact())
+ create_cf(session, "counter1", key_type='text',
compression=compression, columns={'column1': 'text',
+
'v': 'counter static',
+
'value': 'counter'},
+ primary_key="key, column1", clustering='column1 ASC',
compact_storage=self.compact())
+
def test_sstableloader_compression_none_to_none(self):
self.skip_base_class_test()
self.load_sstable_with_configuration(None, None)
@@ -195,7 +203,11 @@ class TestBaseSStableLoader(Tester):
logger.debug("re-creating the keyspace and column families.")
session = self.cql_connection(node1)
- self.create_schema(session, ks, post_compression)
+
+ if self.test_compact and default_install_version >= MAJOR_VERSION_4:
+ self.create_schema_40(session, ks, post_compression)
+ else:
+ self.create_schema(session, ks, post_compression)
time.sleep(2)
logger.debug("Calling sstableloader")
@@ -206,7 +218,7 @@ class TestBaseSStableLoader(Tester):
for i in range(NUM_KEYS):
query = "SELECT * FROM standard1 WHERE KEY='{}'".format(i)
assert_one(session, query, [str(i), 'col', str(i)])
- query = "SELECT * FROM counter1 WHERE KEY='{}'".format(i)
+ query = "SELECT key, v FROM counter1 WHERE KEY='{}'".format(i)
assert_one(session, query, [str(i), 1])
logger.debug("Reading data back")
diff --git a/upgrade_tests/storage_engine_upgrade_test.py
b/upgrade_tests/storage_engine_upgrade_test.py
index c1fc228..88abb97 100644
--- a/upgrade_tests/storage_engine_upgrade_test.py
+++ b/upgrade_tests/storage_engine_upgrade_test.py
@@ -516,7 +516,6 @@ class TestLoadMdSStables(TestBaseSStableLoader):
@pytest.mark.upgrade_test
[email protected]("4.0 sstableloader can't handle formerly compact tables even
after drop compact storage, rebuild, cleanup")
@since('4.0', max_version='4.99')
class TestLoadMdCompactSStables(TestBaseSStableLoader):
upgrade_from = '3.0.17'
@@ -530,7 +529,6 @@ class TestLoadMdThreeOneOneSStables(TestBaseSStableLoader):
@pytest.mark.upgrade_test
[email protected]("4.0 sstableloader can't handle formerly compact tables even
after drop compact storage, rebuild, cleanup")
@since('4.0', max_version='4.99')
class TestLoadMdThreeOneOneCompactSStables(TestBaseSStableLoader):
upgrade_from = '3.11.3'
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]