From 2d59969f153aaf760b2851418cb74c644ecf918e Mon Sep 17 00:00:00 2001 From: Wojciech Mitros Date: Tue, 24 Dec 2024 10:36:35 +0100 Subject: [PATCH] feature(views-with-tablets): enable testing materialized views with tablets Materialized views are currently not allowed in tablet keyspaces, due to some pending issues. However, they can be enabled using the "views-with-tablets" experimental feature. While improving views with tablets, we should make sure that the existing tests keep passing, so we should run materialized view (and index) tests with tablets using the experimental feature. The feature doesn't affect tests ran on vnodes. For tablets, the tests would fail without the feature due to unsupported configuration. Considering that, we should enable the feature by default for all tests (with a special consideration to upgrade tests). The change includes: * modifying the default experimental_features in defaults/test_default.yaml * updating upgrade tests - for upgrades, the first version with this experimental feature will be 2025.1, so the upgrade tests are updated to remove this feature from the defaults and to set it when upgrading to 2025.1 or higher. When testing upgrades to future versions, we'll need to keep the experimental_feature also for base version, with an exception for sequential upgrades, (currently we only have 2021.1->2022.1->2023.1 test in test_custom_profile_sequential_rolling_upgrade) where the base version of the sequence might not have this experimental feature, so we'll need to adjust it accordingly. --- defaults/test_default.yaml | 2 ++ .../performance/perf-regression-latency-650gb-upgrade.yaml | 2 ++ .../upgrades/customer-profile/rolling-upgrade-custom-d1.yaml | 2 ++ test-cases/upgrades/generic-rolling-upgrade.yaml | 2 ++ test-cases/upgrades/multi-dc-rolling-upgrade.yaml | 2 ++ test-cases/upgrades/rolling-upgrade-latency-regression.yaml | 2 ++ .../test_data/test_scylla_yaml_builders/rolling-upgrade.yaml | 2 ++ unit_tests/test_scylla_yaml.py | 2 ++ upgrade_test.py | 3 ++- 9 files changed, 18 insertions(+), 1 deletion(-) diff --git a/defaults/test_default.yaml b/defaults/test_default.yaml index 1837a8ba46..0c9ba3c012 100644 --- a/defaults/test_default.yaml +++ b/defaults/test_default.yaml @@ -109,6 +109,8 @@ skip_download: false authenticator_user: '' authenticator_password: '' +experimental_features: ['views-with-tablets'] + # gemini defaults n_test_oracle_db_nodes: 1 gemini_seed: 0 diff --git a/test-cases/performance/perf-regression-latency-650gb-upgrade.yaml b/test-cases/performance/perf-regression-latency-650gb-upgrade.yaml index 3b0fb7eb7b..eb90780d12 100644 --- a/test-cases/performance/perf-regression-latency-650gb-upgrade.yaml +++ b/test-cases/performance/perf-regression-latency-650gb-upgrade.yaml @@ -31,6 +31,8 @@ append_scylla_args: '--blocked-reactor-notify-ms 5 --abort-on-lsa-bad-alloc 1 -- backtrace_decoding: false print_kernel_callstack: true +experimental_features: [] + store_perf_results: true email_recipients: ["scylla-perf-results@scylladb.com"] use_prepared_loaders: true diff --git a/test-cases/upgrades/customer-profile/rolling-upgrade-custom-d1.yaml b/test-cases/upgrades/customer-profile/rolling-upgrade-custom-d1.yaml index 191bcde317..abf62c4257 100644 --- a/test-cases/upgrades/customer-profile/rolling-upgrade-custom-d1.yaml +++ b/test-cases/upgrades/customer-profile/rolling-upgrade-custom-d1.yaml @@ -40,6 +40,8 @@ append_scylla_args: '--blocked-reactor-notify-ms 500 --abort-on-lsa-bad-alloc 1 use_mgmt: false +experimental_features: [] + use_prepared_loaders: true append_scylla_yaml: diff --git a/test-cases/upgrades/generic-rolling-upgrade.yaml b/test-cases/upgrades/generic-rolling-upgrade.yaml index 45dd355160..33fbcd0305 100644 --- a/test-cases/upgrades/generic-rolling-upgrade.yaml +++ b/test-cases/upgrades/generic-rolling-upgrade.yaml @@ -24,6 +24,8 @@ internode_compression: 'all' use_mgmt: false +experimental_features: [] + use_preinstalled_scylla: false # those are needed to be give by the job, via environment variable diff --git a/test-cases/upgrades/multi-dc-rolling-upgrade.yaml b/test-cases/upgrades/multi-dc-rolling-upgrade.yaml index d2d4f1cf3f..64e8d4c119 100644 --- a/test-cases/upgrades/multi-dc-rolling-upgrade.yaml +++ b/test-cases/upgrades/multi-dc-rolling-upgrade.yaml @@ -22,6 +22,8 @@ authenticator_password: 'cassandra' internode_compression: 'all' +experimental_features: [] + use_mgmt: false # those are needed to be give by the job, via environment variable diff --git a/test-cases/upgrades/rolling-upgrade-latency-regression.yaml b/test-cases/upgrades/rolling-upgrade-latency-regression.yaml index 2b742716e0..a6c2b40699 100644 --- a/test-cases/upgrades/rolling-upgrade-latency-regression.yaml +++ b/test-cases/upgrades/rolling-upgrade-latency-regression.yaml @@ -47,6 +47,8 @@ nemesis_class_name: 'NoOpMonkey' nemesis_during_prepare: false use_mgmt: false +experimental_features: [] + user_prefix: 'rolling-upgrade-ltncy-rgrssn' server_encrypt: true diff --git a/unit_tests/test_data/test_scylla_yaml_builders/rolling-upgrade.yaml b/unit_tests/test_data/test_scylla_yaml_builders/rolling-upgrade.yaml index 579695b616..f5c63993c2 100644 --- a/unit_tests/test_data/test_scylla_yaml_builders/rolling-upgrade.yaml +++ b/unit_tests/test_data/test_scylla_yaml_builders/rolling-upgrade.yaml @@ -37,6 +37,8 @@ authenticator_password: 'cassandra' use_mgmt: false +experimental_features: [] + gemini_cmd: "gemini -d --duration 2h \ -c 10 -m write -f --non-interactive --cql-features normal \ --max-mutation-retries 5 --max-mutation-retries-backoff 500ms \ diff --git a/unit_tests/test_scylla_yaml.py b/unit_tests/test_scylla_yaml.py index 66119fcef4..de35ac441f 100644 --- a/unit_tests/test_scylla_yaml.py +++ b/unit_tests/test_scylla_yaml.py @@ -126,6 +126,7 @@ def test_scylla_yaml(self): parameters=[{'seeds': ['1.1.1.1', '2.2.2.2']}]), ], 'force_schema_commit_log': True, + 'experimental_features': None, }, expected_without_defaults={ 'background_writer_scheduling_quota': 1.0, @@ -151,6 +152,7 @@ def test_scylla_yaml(self): 'prometheus_prefix': 'someprefix', 'log_to_stdout': True, 'force_schema_commit_log': True, + 'experimental_features': None, }, expected_with_defaults={ 'abort_on_ebadf': None, diff --git a/upgrade_test.py b/upgrade_test.py index 54e05a7fd8..4193d04aec 100644 --- a/upgrade_test.py +++ b/upgrade_test.py @@ -223,7 +223,8 @@ def _upgrade_node(self, node, upgrade_sstables=True, new_scylla_repo=None, new_v if self.params.get("enable_tablets_on_upgrade"): scylla_yaml_updates.update({"enable_tablets": True}) - + if ComparableScyllaVersion(new_version) >= "2025.1.0~rc0": + scylla_yaml_updates.update({"experimental_features": ["views-with-tablets"]}) if self.params.get('test_sst3'): scylla_yaml_updates.update({"enable_sstables_mc_format": True})