From 4a32bde4a50815b8029464d046be9c57ecc39eb3 Mon Sep 17 00:00:00 2001 From: Klaus Ma Date: Mon, 14 Aug 2017 09:02:41 +0800 Subject: [PATCH] Update RegisterMandatoryFitPredicate to avoid double register. --- .../algorithmprovider/defaults/defaults.go | 1 - plugin/pkg/scheduler/factory/plugins.go | 21 +++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go b/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go index 7e25b0405c2..2d7e278a921 100644 --- a/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go +++ b/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go @@ -176,7 +176,6 @@ func defaultPredicates() sets.String { factory.RegisterFitPredicate("CheckNodeDiskPressure", predicates.CheckNodeDiskPressurePredicate), // Fit is determied by node condtions: not ready, network unavailable and out of disk. - factory.RegisterFitPredicate("CheckNodeCondition", predicates.CheckNodeConditionPredicate), factory.RegisterMandatoryFitPredicate("CheckNodeCondition", predicates.CheckNodeConditionPredicate), // Fit is determined by volume zone requirements. diff --git a/plugin/pkg/scheduler/factory/plugins.go b/plugin/pkg/scheduler/factory/plugins.go index ad245c7d9c6..8963525e93b 100644 --- a/plugin/pkg/scheduler/factory/plugins.go +++ b/plugin/pkg/scheduler/factory/plugins.go @@ -72,10 +72,10 @@ var ( schedulerFactoryMutex sync.Mutex // maps that hold registered algorithm types - fitPredicateMap = make(map[string]FitPredicateFactory) - mandatoryFitPredicateMap = make(map[string]FitPredicateFactory) - priorityFunctionMap = make(map[string]PriorityConfigFactory) - algorithmProviderMap = make(map[string]AlgorithmProviderConfig) + fitPredicateMap = make(map[string]FitPredicateFactory) + mandatoryFitPredicates = make(map[string]bool) + priorityFunctionMap = make(map[string]PriorityConfigFactory) + algorithmProviderMap = make(map[string]AlgorithmProviderConfig) // Registered metadata producers priorityMetadataProducer MetadataProducerFactory @@ -107,7 +107,8 @@ func RegisterMandatoryFitPredicate(name string, predicate algorithm.FitPredicate schedulerFactoryMutex.Lock() defer schedulerFactoryMutex.Unlock() validateAlgorithmNameOrDie(name) - mandatoryFitPredicateMap[name] = func(PluginFactoryArgs) algorithm.FitPredicate { return predicate } + fitPredicateMap[name] = func(PluginFactoryArgs) algorithm.FitPredicate { return predicate } + mandatoryFitPredicates[name] = true return name } @@ -321,10 +322,12 @@ func getFitPredicateFunctions(names sets.String, args PluginFactoryArgs) (map[st predicates[name] = factory(args) } - // Always include required fit predicates. - for name, factory := range mandatoryFitPredicateMap { - if _, found := predicates[name]; !found { - predicates[name] = factory(args) + // Always include mandatory fit predicates. + for name, mandatory := range mandatoryFitPredicates { + if mandatory { + if factory, found := fitPredicateMap[name]; found { + predicates[name] = factory(args) + } } }