From d7f7b13755c678aa5ab7e951b8c68ec0e9eaeda6 Mon Sep 17 00:00:00 2001 From: Danielle Tomlinson Date: Wed, 14 Nov 2018 15:28:11 -0800 Subject: [PATCH] fixup: Support missing values in affinities --- scheduler/feasible.go | 4 ++-- scheduler/rank.go | 12 +++--------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/scheduler/feasible.go b/scheduler/feasible.go index 3e213430d52f..022f5c298f92 100644 --- a/scheduler/feasible.go +++ b/scheduler/feasible.go @@ -479,9 +479,9 @@ func checkConstraint(ctx Context, operand string, lVal, rVal interface{}, lFound } // checkAffinity checks if a specific affinity is satisfied -func checkAffinity(ctx Context, operand string, lVal, rVal interface{}) bool { +func checkAffinity(ctx Context, operand string, lVal, rVal interface{}, lFound, rFound bool) bool { // We pass ok here for both values, because matchesAffinity prevalidates these - return checkConstraint(ctx, operand, lVal, rVal, true, true) + return checkConstraint(ctx, operand, lVal, rVal, lFound, rFound) } // checkAttributeAffinity checks if an affinity is satisfied diff --git a/scheduler/rank.go b/scheduler/rank.go index 7d2b4ad4e931..1ffd028e8dcf 100644 --- a/scheduler/rank.go +++ b/scheduler/rank.go @@ -564,17 +564,11 @@ func (iter *NodeAffinityIterator) Next() *RankedNode { func matchesAffinity(ctx Context, affinity *structs.Affinity, option *structs.Node) bool { //TODO(preetha): Add a step here that filters based on computed node class for potential speedup // Resolve the targets - lVal, ok := resolveTarget(affinity.LTarget, option) - if !ok { - return false - } - rVal, ok := resolveTarget(affinity.RTarget, option) - if !ok { - return false - } + lVal, lOk := resolveTarget(affinity.LTarget, option) + rVal, rOk := resolveTarget(affinity.RTarget, option) // Check if satisfied - return checkAffinity(ctx, affinity.Operand, lVal, rVal) + return checkAffinity(ctx, affinity.Operand, lVal, rVal, lOk, rOk) } // ScoreNormalizationIterator is used to combine scores from various prior