[scheduler] add topological extender type #537
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Enhances the scheduler to support an additional type of extenders which can alter the graph's structure with topological hints, implementing tighter dependency (comparing to weight-based dependency) between vertices/modules.
Overview
What this PR does / why we need it
Provides two new extender types:
Stateful extender (instead of Ressetable extender) is a type of extenders that requires to have the current state of vertices (during the calculation) in order to make a decision if a module has to be enabled/disabled (for example, script enabled extender works this way. This state is shared among all Stateful extenders meaning that two or more extenders are able to follow the changes other extenders apply when filtering.
Topological extender, provides additional connections between vertices by means of
GetTopologicalHints
method. These hints are used when the graph is being built and could represent additional dependencies between vertices (modules). If a module has a dependency from another module, this module's weight has no effect anymore and the module's run during the converge process takes place right after the latest dependency run.Some other minor changes like using custom BFS method for traversing the graph, and so on.
Special notes for your reviewer