This PR exposes vnodes-to-tablets migrations through the task manager API via a virtual task. This allows users to list, query status, and wait on ongoing migrations through a standard interface, consistent with other global operations such as tablet operations and topology requests are already exposed. The virtual task exposes all migrations that are currently in progress. Each migrating keyspace appears as a separate task, identified by a deterministic name-based (v3) UUID derived from the keyspace name. Progress is reported as the number of nodes that have switched to tablets vs. the total. The number increases on the forward path and decreases on rollback. The task is not abortable - rolling back a migration requires a manual procedure. The `wait` API blocks until the migration either completes (returning `done`) or is rolled back (returning `suspended`). Example output: ``` $ scylla nodetool tasks list vnodes_to_tablets_migration task_id type kind scope state sequence_number keyspace table entity shard start_time end_time 1747b573-6cd6-312d-abb1-9b66c1c2d81f vnodes_to_tablets_migration cluster keyspace running 0 ks 0 $ scylla nodetool tasks status 1747b573-6cd6-312d-abb1-9b66c1c2d81f id: 1747b573-6cd6-312d-abb1-9b66c1c2d81f type: vnodes_to_tablets_migration kind: cluster scope: keyspace state: running is_abortable: false start_time: end_time: error: parent_id: none sequence_number: 0 shard: 0 keyspace: ks table: entity: progress_units: nodes progress_total: 3 progress_completed: 0 ``` Fixes SCYLLADB-1150. New feature, no backport needed. Closes scylladb/scylladb#29256 * github.com:scylladb/scylladb: test: cluster: Verify vnodes-to-tablets migration virtual task distributed_loader: Link resharding tasks to migration virtual task distributed_loader: Make table_populator aware of migration rollbacks service: Add virtual task for vnodes-to-tablets migrations storage_service: Guard migration status against uninitialized group0 compaction: Add parent_id to table_resharding_compaction_task_impl storage_service: Add keyspace-level migration status function storage_service: Replace migration status string with enum utils: Add UUID::is_name_based()
Scylla in-source tests.
For details on how to run the tests, see docs/dev/testing.md
Shared C++ utils, libraries are in lib/, for Python - pylib/
alternator - Python tests which connect to a single server and use the DynamoDB API unit, boost, raft - unit tests in C++ cqlpy - Python tests which connect to a single server and use CQL topology* - tests that set up clusters and add/remove nodes cql - approval tests that use CQL and pre-recorded output rest_api - tests for Scylla REST API Port 9000 scylla-gdb - tests for scylla-gdb.py helper script nodetool - tests for C++ implementation of nodetool
If you can use an existing folder, consider adding your test to it. New folders should be used for new large categories/subsystems, or when the test environment is significantly different from some existing suite, e.g. you plan to start scylladb with different configuration, and you intend to add many tests and would like them to reuse an existing Scylla cluster (clusters can be reused for tests within the same folder).
To add a new folder, create a new directory, and then
copy & edit its suite.ini.