diff --git a/scheduler/feasible.go b/scheduler/feasible.go index 9fa42d592..78e98f368 100644 --- a/scheduler/feasible.go +++ b/scheduler/feasible.go @@ -484,8 +484,8 @@ func checkConstraint(ctx Context, operand string, lVal, rVal interface{}) bool { func checkAffinity(ctx Context, operand string, lVal, rVal interface{}) bool { switch operand { case structs.AffinitySetContainsAny: - return checkSetContainsAny(ctx, lVal, rVal) - case structs.AffinitySetContainsAll: + return checkSetContainsAny(lVal, rVal) + case structs.AffinitySetContainsAll, structs.ConstraintSetContains: return checkSetContainsAll(ctx, lVal, rVal) default: return checkConstraint(ctx, operand, lVal, rVal) @@ -628,7 +628,7 @@ func checkSetContainsAll(ctx Context, lVal, rVal interface{}) bool { // checkSetContainsAny is used to see if the left hand side contains any // values on the right hand side -func checkSetContainsAny(ctx Context, lVal, rVal interface{}) bool { +func checkSetContainsAny(lVal, rVal interface{}) bool { // Ensure left-hand is string lStr, ok := lVal.(string) if !ok { diff --git a/scheduler/feasible_test.go b/scheduler/feasible_test.go index 7917077f7..9346d0ba1 100644 --- a/scheduler/feasible_test.go +++ b/scheduler/feasible_test.go @@ -1611,3 +1611,11 @@ func TestFeasibilityWrapper_JobEligible_TgEscaped(t *testing.T) { t.Fatalf("bad: %v %v", e, ok) } } + +func TestSetContainsAny(t *testing.T) { + require.True(t, checkSetContainsAny("a", "a")) + require.True(t, checkSetContainsAny("a,b", "a")) + require.True(t, checkSetContainsAny(" a,b ", "a ")) + require.True(t, checkSetContainsAny("a", "a")) + require.False(t, checkSetContainsAny("b", "a")) +}