-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(upgrade): upgrade with raft topology procedure #7295
base: master
Are you sure you want to change the base?
fix(upgrade): upgrade with raft topology procedure #7295
Conversation
eec8251
to
f80b512
Compare
f80b512
to
e8d533a
Compare
blocked by scylladb/scylladb#18098 |
e8d533a
to
ad052de
Compare
I'm unassigning myself -- it is blocked by scylladb/scylladb#18098 but that issue does not "belong" to me |
Is this still the case? |
Should be no longer -- @aleksbykov please retest (on nightly build -- the fix is not backported to 6.0 yet) |
90b5607
to
8b75680
Compare
After upgrade to latest master(6.0) raft topology feature or tablets + raft topology features will be enabled by default To switch cluster from gossiper to raft topology, raft topology procedure should be executed. It is described in scylla doc upgrade from 5.4-> 6.0 section: Upgrade from legacy topology to raft-based topology
8b75680
to
e5f6f03
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it right to put it as default and not providing tests with false?
Especially, that false
path is current default for enterprise (IIRC it was not decided yet to turn on tablets by default in enterprise).
scylla_yaml_updates.update({"experimental_features": ["tablets", "consistent-topology-changes"]}) | ||
scylla_yaml_updates.update({"enable_tablets": True}) | ||
|
||
if self.params.get("enable_force_`gossip_topology_changes"): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo here in param - so it looks this path was never tested
@@ -339,6 +339,8 @@ def set_authorizer(cls, authorizer: str): | |||
audit_categories: str = None # None | |||
audit_tables: str = None # None | |||
audit_keyspaces: str = None # None | |||
force_gossip_topology_changes: bool = None # False | |||
enable_tablets: bool = None # False |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bit misleading comment - 6.0.0 comes with this set explicitly to True
- I think worth to add this info (like we do for e.g. rpc_port).
@@ -1550,6 +1550,10 @@ class SCTConfiguration(dict): | |||
|
|||
dict(name="kafka_connectors", env="SCT_KAFKA_CONNECTORS", type=str_or_list_or_eval, | |||
help="configuration for setup up kafka connectors"), | |||
|
|||
dict(name="enable_force_gossip_topology_changes", env="SCT_ENABLE_FORCE_GOSSIP_TOPOLOGY_CHANGES", type=boolean, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this param is looking like global one while it is only used in upgrade tests - misleading.
Btw. Can't we just add force_gossip_topology_changes
to append_scylla_yaml
? Now when it is used as dict and merged with other append_scylla_yaml
params, maybe we don't need this one?
@@ -250,3 +250,5 @@ teardown_validators: | |||
|
|||
kafka_backend: null | |||
kafka_connectors: [] | |||
|
|||
enable_force_gossip_topology_changes: false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why enable_force_gossip_topology_changes
and not force_gossip_topology_changes
?
@@ -1550,6 +1550,10 @@ class SCTConfiguration(dict): | |||
|
|||
dict(name="kafka_connectors", env="SCT_KAFKA_CONNECTORS", type=str_or_list_or_eval, | |||
help="configuration for setup up kafka connectors"), | |||
|
|||
dict(name="enable_force_gossip_topology_changes", env="SCT_ENABLE_FORCE_GOSSIP_TOPOLOGY_CHANGES", type=boolean, | |||
help="""Enable gossip topology changes (disable raft topology)"""), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
--> """Force gossip topology changes (disable raft topology)""" ?
scylla_yaml_updates.update({"enable_tablets": True}) | ||
|
||
if self.params.get("enable_force_`gossip_topology_changes"): | ||
scylla_yaml_updates.update({"force_gossip_topology_changes": True, "enable_tablets": False}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
enable_tablets is "false" by default of binary.
After upgrade to latest master(6.0) raft topology feature or
tablets + raft topology features will be enabled by default
To switch cluster from gossiper to raft topology, raft topology
procedure should be executed. It is described here:
https://github.com/scylladb/scylladb/blob/c5601a749e21fc710958a7c84316ecdf5943022c/docs/dev/topology-over-raft.md
section: Upgrade from legacy topology to raft-based topology
parameter 'enable_tablets_on_upgrade
is used to control upgrade with/without tablets. By default tablets are enabled with scylla parameter
enable_tablets` and it is added to scylla.yaml starting from 6.0. Upon upgrade this parameter should be set explicitly to true to enable tablets or set to false or not be added to scylla.yaml so tablets stay disabled after upgraderaft topology is enabled by default, and could be disabled only with parameter
enforce_gossip_topology_changes
. if this parameter is added to scylla.yaml before upgrade, then raft feature: consistent topology changes will not be enabledTesting
run upgrade from 5.4 -> 6.0.
PR pre-checks (self review)
backport
labelsReminders
sdcm/sct_config.py
)unit-test/
folder)