MySQL 26.7.0
Source Code Documentation
mysql::scheduler::Base_dependency_tracker Class Referenceabstract

Base interface for a dependency tracker. More...

#include <base_dependency_tracker.h>

Inheritance diagram for mysql::scheduler::Base_dependency_tracker:
[legend]

Public Types

using Task_id_type = Task_id
 
using Mutex_type = concurrency::Mutex
 

Public Member Functions

virtual bool add_dependency (const Task_id_type &predecessor, const Task_id_type &successor)=0
 add_dependency More...
 
virtual bool activate_task (const Task_id &task)=0
 Register task in the system to prevent adding dependencies on non-existing tasks and adding active dependencies on tasks that are already finished. More...
 
virtual bool check_ready (const Task_id &task)=0
 check_ready More...
 
virtual std::vector< Task_idmark_dependency_met (const Task_id &task, bool is_finished)=0
 Task is finished, mark all dependencies of this task as met. More...
 
virtual ~Base_dependency_tracker ()=default
 Destructor. More...
 

Detailed Description

Base interface for a dependency tracker.

Allows for:

  • Registering a task in a dependency tracker (activate_task)
  • Setting a dependency between one task and the other (add_dependency); this method is typically called by a scheduling thread
  • Checking if dependency of a task were already satisfied (check_ready); this method is typically called by a worker / scheduling thread which checks whether a task is ready to be executed
  • Marking that dependencies of a concrete task were satisfied (mark_dependency_met). This method is typically called by a worker that finished executing its task

Member Typedef Documentation

◆ Mutex_type

◆ Task_id_type

Constructor & Destructor Documentation

◆ ~Base_dependency_tracker()

virtual mysql::scheduler::Base_dependency_tracker::~Base_dependency_tracker ( )
virtualdefault

Destructor.

Member Function Documentation

◆ activate_task()

virtual bool mysql::scheduler::Base_dependency_tracker::activate_task ( const Task_id task)
pure virtual

Register task in the system to prevent adding dependencies on non-existing tasks and adding active dependencies on tasks that are already finished.

Implemented in mysql::scheduler::Dependency_tracker_stub, and mysql::scheduler::Dependency_tracker_single_predecessor.

◆ add_dependency()

virtual bool mysql::scheduler::Base_dependency_tracker::add_dependency ( const Task_id_type predecessor,
const Task_id_type successor 
)
pure virtual

add_dependency

Function adds dependency if valid

Parameters
predecessorPredecessor task ID
successorSuccessor task ID
Return values
trueDependency added successfully
falseFailed to add dependency

Implemented in mysql::scheduler::Dependency_tracker_stub, and mysql::scheduler::Dependency_tracker_single_predecessor.

◆ check_ready()

virtual bool mysql::scheduler::Base_dependency_tracker::check_ready ( const Task_id task)
pure virtual

check_ready

Function checks whether a task is ready for execution

Parameters
taskTask ID
Returns
true - dependencies of task are met, false - not met, second is

Implemented in mysql::scheduler::Dependency_tracker_stub, and mysql::scheduler::Dependency_tracker_single_predecessor.

◆ mark_dependency_met()

virtual std::vector< Task_id > mysql::scheduler::Base_dependency_tracker::mark_dependency_met ( const Task_id task,
bool  is_finished 
)
pure virtual

Task is finished, mark all dependencies of this task as met.

Parameters
taskIdentifier of a task that finished its execution
is_finishedWhether the task has finished execution
Returns
Vector of task IDs whose dependencies changed

Implemented in mysql::scheduler::Dependency_tracker_stub, and mysql::scheduler::Dependency_tracker_single_predecessor.


The documentation for this class was generated from the following file: