Add a new nodetool cluster super-command. Add nodetool cluster repair command to repair tablet keyspaces. It uses the new /storage_service/tablets/repair API. The nodetool cluster repair command allows you to specify the keyspace and tables to be repaired. A cluster repair of many tables will request /storage_service/tablets/repair and wait for the result synchronously for each table. The nodetool repair command, which was previously used to repair keyspaces of any type, now repairs only vnode keyspaces. Fixes: https://github.com/scylladb/scylladb/issues/22409. Needs backport to 2025.1 that introduces the new tablet repair API - (cherry picked from commitcbde835792) - (cherry picked from commitb81c81c7f4) - (cherry picked from commitaa3973c850) - (cherry picked from commit8bbc5e8923) - (cherry picked from commit02fb71da42) - (cherry picked from commit9769d7a564) Parent PR: #22905 Closes scylladb/scylladb#23672 * github.com:scylladb/scylladb: docs: nodetool: update repair and add tablet-repair docs test: nodetool: add tests for cluster repair command nodetool: add cluster repair command nodetool: repair: extract getting hosts and dcs to functions nodetool: repair: warn about repairing tablet keyspaces nodetool: repair: move keyspace_uses_tablets function
Front-end tests for nodetool
The tests in this directory exercise the nodetool client itself, mocking the API backend. This allows for testing all combinations of all supported options, and still keeping the tests quick.
The tests can be run against both the scylla-native nodetool (default), or the inherited, C*-based nodetool.
Run all tests against the scylla-native nodetool:
pytest --nodetool=scylla .
You can specify the path to the scylla binary with the --nodetool-path option. By default the tests will pick up the ScyllaDB executable, that is appropriate for the --mode option (defaults to dev).
Run all tests against the C* nodetool:
pytest --nodetool=cassandra .
Again, you can specify the path to the nodetool binary with --nodetool-path option. By default, <scylladb.git>/tools/java/bin/nodetool will be used.
When running the test against the java-nodeotol, you can specify the path to JMX with --jmx-path option. By default, <scylladb.git>/tools/jmx/scripts/scylla-jmx will be used.
If you add new tests, make sure to run all tess against both nodetool implementations, to avoid regressions. Note that CI/promotion will only run the tests against the scylla-native nodetool.