24#ifndef MYSQL_SCHEDULER_DEPENDENCY_TRACKER_H
25#define MYSQL_SCHEDULER_DEPENDENCY_TRACKER_H
28#include <condition_variable>
32#include <unordered_map>
33#include <unordered_set>
95 const Task_id &task,
bool is_finished)
override;
MySQL wrapper for a mutex, template which may be specialized with a specific implementation of a mute...
Definition: mutex_wrapper.h:38
Base interface for a dependency tracker.
Definition: base_dependency_tracker.h:53
An example of Dependency Tracker implementation that tracks a single task predecessor.
Definition: dependency_tracker_single_predecessor_example.h:48
bool activate_task(const Task_id &task) override
Register task in the system to prevent adding dependencies on non-existing tasks and adding active de...
Definition: dependency_tracker_single_predecessor_example.cpp:49
std::vector< Task_id > mark_dependency_met(const Task_id &task, bool is_finished) override
Task is finished, mark all dependencies of this task as met.
Definition: dependency_tracker_single_predecessor_example.cpp:66
Dependency_tracker_single_predecessor()
Definition: dependency_tracker_single_predecessor_example.cpp:29
bool check_ready(const Task_id &task) override
check_ready
Definition: dependency_tracker_single_predecessor_example.cpp:53
bool add_dependency(const Task_id_type &predecessor, const Task_id_type &successor) override
add_dependency
Definition: dependency_tracker_single_predecessor_example.cpp:32
std::vector< Task_id > get_successors(const Task_id &task)
Get the list of tasks that depend on the given task.
Definition: dependency_tracker_single_predecessor_example.cpp:77
Dependencies_registry m_dependencies
Registry of task dependencies.
Definition: dependency_tracker_single_predecessor_example.h:106
concurrency::Mutex_key Mt_key
Definition: dependency_tracker_single_predecessor_example.h:52
concurrency::Stage_key St_key
Definition: dependency_tracker_single_predecessor_example.h:53
Represents the identifier of a task ingested by the scheduler,.
Definition: task_id.h:41
PSI_stage_key Stage_key
Definition: stage_srv.h:35
Mutex_wrapper Mutex
Definition: mutex_srv.h:40
PSI_mutex_key Mutex_key
Definition: mutex_srv.h:41
Definition: base_dependency_tracker.h:41
Representation of a dependency.
Definition: dependency_tracker_single_predecessor_example.h:56
Task_id task_id
Task identifier.
Definition: dependency_tracker_single_predecessor_example.h:58
std::optional< Task_id > predecessor
Task predecessor.
Definition: dependency_tracker_single_predecessor_example.h:60
std::vector< Task_id > successors
Task can have many successors.
Definition: dependency_tracker_single_predecessor_example.h:62