mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-02 06:05:53 +00:00
A virtual task is a new kind of task supported by task manager, which covers cluster-wide operations. From users' perspective virtual tasks behave similarly to task_manager::tasks. The API side of virtual tasks will be covered in the following patches. Contrary to task_manager::task, virtual task does not update its fields proactively. Moreover, no object is kept in memory for each individual virtual task's operation. Instead a service (or services) is queried on API user's demand to learn about the status of running operation. Hence the name. task_manager::virtual_task is responsible for a whole group of virtual tasks, i.e. for tracking and generating statuses of all operations of similar type. To enable tracking of some kind of operations, one needs to override task_manager::virtual_task::impl and provide implementations of the methods returning appropriate information about the operations. task_manager::virtual_task must be kept on shard 0. Similarly to task_manager::tasks, virtual tasks can have child tasks, responsible for tracking suboperations' progress. But virtual tasks cannot have parents - they are always roots in task trees. Some methods and structs will be implemented in later patches.