From d4da3d22ad62364b0eb36d2c62c9442cf2b1f826 Mon Sep 17 00:00:00 2001 From: Mikhail Scherba Date: Wed, 28 Aug 2024 17:56:31 +0300 Subject: [PATCH 1/2] fix scheduler and provide get-update-by-extender method --- pkg/module_manager/module_manager.go | 7 ++++++- pkg/module_manager/scheduler/scheduler.go | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/pkg/module_manager/module_manager.go b/pkg/module_manager/module_manager.go index d4adc3bb7..ba15d9e5e 100644 --- a/pkg/module_manager/module_manager.go +++ b/pkg/module_manager/module_manager.go @@ -474,11 +474,16 @@ func (mm *ModuleManager) GetEnabledModuleNames() []string { return mm.moduleScheduler.GetEnabledModuleNames() } -// IsModuleEnabled ... +// IsModuleEnabled returns current state of the module according to the scheduler func (mm *ModuleManager) IsModuleEnabled(moduleName string) bool { return mm.moduleScheduler.IsModuleEnabled(moduleName) } +// GetUpdatedByExtender returns the name of the extender that determined the module's state +func (mm *ModuleManager) GetUpdatedByExtender(moduleName string) (string, error) { + return mm.moduleScheduler.GetUpdatedByExtender(moduleName) +} + func (mm *ModuleManager) AddExtender(ex extenders.Extender) error { return mm.moduleScheduler.AddExtender(ex) } diff --git a/pkg/module_manager/scheduler/scheduler.go b/pkg/module_manager/scheduler/scheduler.go index 27e0b1528..436fabda5 100644 --- a/pkg/module_manager/scheduler/scheduler.go +++ b/pkg/module_manager/scheduler/scheduler.go @@ -351,12 +351,19 @@ func moduleSortFunc(m1, m2 string) bool { return m1 < m2 } +func (s *Scheduler) GetUpdatedByExtender(moduleName string) (string, error) { + vertex, err := s.dag.Vertex(moduleName) + if err != nil { + return "", err + } + return vertex.GetUpdatedBy(), err +} + func (s *Scheduler) IsModuleEnabled(moduleName string) bool { vertex, err := s.dag.Vertex(moduleName) if err != nil { return false } - return vertex.GetState() } @@ -482,18 +489,16 @@ outerCycle: if e.ext.IsTerminator() { // if disabled - terminate filtering if !*moduleStatus { + // if so far is enabled OR there are ahead other extenders that could enable the module, + // mark the module as disbled by the terminator if vBuf[moduleName].enabled || e.filterAhead { vBuf[moduleName].enabled = *moduleStatus vBuf[moduleName].updatedBy = string(e.ext.Name()) } break } - - // if enabled and there are some other filtering extenders ahead - continue filtering - if e.filterAhead { - continue - } - break + // continue checking extenders + continue } vBuf[moduleName].enabled = *moduleStatus vBuf[moduleName].updatedBy = string(e.ext.Name()) From 4d3ec26ddf65122e0730964e76660dea70660f89 Mon Sep 17 00:00:00 2001 From: Mikhail Scherba Date: Wed, 28 Aug 2024 18:00:57 +0300 Subject: [PATCH 2/2] fix spelling Signed-off-by: Mikhail Scherba --- pkg/module_manager/scheduler/scheduler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/module_manager/scheduler/scheduler.go b/pkg/module_manager/scheduler/scheduler.go index 436fabda5..ce17e4862 100644 --- a/pkg/module_manager/scheduler/scheduler.go +++ b/pkg/module_manager/scheduler/scheduler.go @@ -490,7 +490,7 @@ outerCycle: // if disabled - terminate filtering if !*moduleStatus { // if so far is enabled OR there are ahead other extenders that could enable the module, - // mark the module as disbled by the terminator + // mark the module as disabled by the terminator if vBuf[moduleName].enabled || e.filterAhead { vBuf[moduleName].enabled = *moduleStatus vBuf[moduleName].updatedBy = string(e.ext.Name())