mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-20 00:20:47 +00:00
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()