[
https://issues.apache.org/jira/browse/YUNIKORN-3464?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated YUNIKORN-3464:
-------------------------------------
Labels: pull-request-available (was: )
> [k8shim] PreemptionFilter fails for affinity and topology predicates due to
> stale CycleState
> --------------------------------------------------------------------------------------------
>
> Key: YUNIKORN-3464
> URL: https://issues.apache.org/jira/browse/YUNIKORN-3464
> Project: Apache YuniKorn
> Issue Type: Bug
> Components: shim - kubernetes
> Affects Versions: 1.6.0
> Reporter: Hedger Lai
> Assignee: Hedger Lai
> Priority: Major
> Labels: pull-request-available
>
> h3. Problem
> In {{PreemptionFilter()}}, removing candidate victim pods from {{NodeInfo}}
> fails to clear predicate violations for plugins that rely on {{CycleState}}
> (such as {{InterPodAffinity}} and {{PodTopologySpread}}), causing preemption
> to falsely fail and return -1 even when all conflicting pods are removed.
> h3. Root Cause
> Kubernetes affinity/topology plugins check counters cached in {{CycleState}}
> rather than inspecting {{NodeInfo}}:
> {code:go}
> //
> k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go
> if state.antiAffinityCounts[tp] > 0 {
> return false // rejects node because CycleState counter was never
> decremented
> }
> {code}
> In {{PreemptionFilter()}}, {{cycleState}} is passed without cloning, and
> {{PreFilterExtensions.RemovePod()}} is never invoked when victims are
> tentatively removed from {{NodeInfo}}. Consequently, {{CycleState}} retains
> stale positive counters, and {{Filter()}} unconditionally rejects the node.
> h3. Fix
> 1. Clone {{CycleState}} at the start of {{PreemptionFilter()}} to isolate
> tentative mutations.
> 2. Invoke {{ext.RemovePod()}} and {{ext.AddPod()}} on active
> {{PreFilterExtensions}} plugins when candidate victims are tentatively
> removed or restored.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]