mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Update semantics of EvenPodsSpread metadata object
- Now `nil` represents the meta is not set at all (in PreFilter phase) - An empty `PodTopologySpreadMetadata` object denotes it's a legit meta and is set in PreFilter phase.
This commit is contained in:
parent
468aebc17f
commit
3d353f5122
@ -400,7 +400,7 @@ func GetPodTopologySpreadMetadata(pod *v1.Pod, allNodes []*schedulernodeinfo.Nod
|
||||
return nil, err
|
||||
}
|
||||
if len(constraints) == 0 {
|
||||
return nil, nil
|
||||
return &PodTopologySpreadMetadata{}, nil
|
||||
}
|
||||
|
||||
var lock sync.Mutex
|
||||
|
@ -14,6 +14,7 @@ go_library(
|
||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/klog:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/klog"
|
||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/migration"
|
||||
@ -55,6 +56,8 @@ func (pl *PodTopologySpread) Name() string {
|
||||
|
||||
// preFilterState computed at PreFilter and used at Filter.
|
||||
type preFilterState struct {
|
||||
// `nil` represents the meta is not set at all (in PreFilter phase)
|
||||
// An empty `PodTopologySpreadMetadata` object denotes it's a legit meta and is set in PreFilter phase.
|
||||
meta *predicates.PodTopologySpreadMetadata
|
||||
}
|
||||
|
||||
@ -118,11 +121,9 @@ func (pl *PodTopologySpread) RemovePod(ctx context.Context, cycleState *framewor
|
||||
func getPodTopologySpreadMetadata(cycleState *framework.CycleState) (*predicates.PodTopologySpreadMetadata, error) {
|
||||
c, err := cycleState.Read(preFilterStateKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// It's possible that meta is set to nil intentionally.
|
||||
if c == nil {
|
||||
// The metadata wasn't pre-computed in prefilter. We ignore the error for now since
|
||||
// we are able to handle that by computing it again (e.g. in Filter()).
|
||||
klog.Error(err)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user