scheduler: Remove FinishBinding from cache

This commit is contained in:
Roman Baron
2025-12-30 17:00:55 +02:00
parent 74b7ff3c63
commit 944ce8f55c
4 changed files with 5 additions and 42 deletions

View File

@@ -372,24 +372,6 @@ func (cache *cacheImpl) AssumePod(logger klog.Logger, pod *v1.Pod) error {
return cache.addPod(logger, pod, true)
}
func (cache *cacheImpl) FinishBinding(logger klog.Logger, pod *v1.Pod) error {
return cache.finishBinding(logger, pod, time.Now())
}
// finishBinding exists to make tests deterministic by injecting now as an argument
func (cache *cacheImpl) finishBinding(logger klog.Logger, pod *v1.Pod, now time.Time) error {
key, err := framework.GetPodKey(pod)
if err != nil {
return err
}
cache.mu.RLock()
defer cache.mu.RUnlock()
logger.V(5).Info("Finished binding for pod", "podKey", key, "pod", klog.KObj(pod))
return nil
}
func (cache *cacheImpl) ForgetPod(logger klog.Logger, pod *v1.Pod) error {
key, err := framework.GetPodKey(pod)
if err != nil {

View File

@@ -262,17 +262,9 @@ func TestAssumePodScheduled(t *testing.T) {
}
}
func assumeAndFinishBinding(logger klog.Logger, cache *cacheImpl, pod *v1.Pod, assumedTime time.Time) error {
if err := cache.AssumePod(logger, pod); err != nil {
return err
}
return cache.finishBinding(logger, pod, assumedTime)
}
// TestAddPodWillConfirm tests that a pod being Add()ed will be confirmed if assumed.
func TestAddPodWillConfirm(t *testing.T) {
nodeName := "node"
now := time.Now()
testPods := []*v1.Pod{
makeBasePod(t, nodeName, "test-1", "100m", "500", "", []v1.ContainerPort{{HostIP: "127.0.0.1", HostPort: 80, Protocol: "TCP"}}),
@@ -306,7 +298,7 @@ func TestAddPodWillConfirm(t *testing.T) {
defer cancel()
cache := newCache(ctx, time.Second, nil)
for _, podToAssume := range test.podsToAssume {
if err := assumeAndFinishBinding(logger, cache, podToAssume, now); err != nil {
if err := cache.AssumePod(logger, podToAssume); err != nil {
t.Fatalf("assumePod failed: %v", err)
}
}
@@ -341,7 +333,6 @@ func TestAddPodWillConfirm(t *testing.T) {
func TestDump(t *testing.T) {
nodeName := "node"
now := time.Now()
testPods := []*v1.Pod{
makeBasePod(t, nodeName, "test-1", "100m", "500", "", []v1.ContainerPort{{HostIP: "127.0.0.1", HostPort: 80, Protocol: "TCP"}}),
@@ -360,7 +351,7 @@ func TestDump(t *testing.T) {
defer cancel()
cache := newCache(ctx, time.Second, nil)
for _, podToAssume := range test.podsToAssume {
if err := assumeAndFinishBinding(logger, cache, podToAssume, now); err != nil {
if err := cache.AssumePod(logger, podToAssume); err != nil {
t.Errorf("assumePod failed: %v", err)
}
}
@@ -392,7 +383,6 @@ func TestAddPodAlwaysUpdatesPodInfoInNodeInfo(t *testing.T) {
logger, ctx := ktesting.NewTestContext(t)
ctx, cancel := context.WithCancel(ctx)
defer cancel()
now := time.Now()
p1 := makeBasePod(t, "node1", "test-1", "100m", "500", "", []v1.ContainerPort{{HostPort: 80}})
p2 := p1.DeepCopy()
@@ -427,7 +417,7 @@ func TestAddPodAlwaysUpdatesPodInfoInNodeInfo(t *testing.T) {
cache := newCache(ctx, time.Second, nil)
for _, podToAssume := range test.podsToAssume {
if err := assumeAndFinishBinding(logger, cache, podToAssume, now); err != nil {
if err := cache.AssumePod(logger, podToAssume); err != nil {
t.Fatalf("assumePod failed: %v", err)
}
}
@@ -446,8 +436,6 @@ func TestAddPodAlwaysUpdatesPodInfoInNodeInfo(t *testing.T) {
// TestAddPodWillReplaceAssumed tests that a pod being Add()ed will replace any assumed pod.
func TestAddPodWillReplaceAssumed(t *testing.T) {
now := time.Now()
assumedPod := makeBasePod(t, "assumed-node-1", "test-1", "100m", "500", "", []v1.ContainerPort{{HostPort: 80}})
addedPod := makeBasePod(t, "actual-node", "test-1", "100m", "500", "", []v1.ContainerPort{{HostPort: 80}})
updatedPod := makeBasePod(t, "actual-node", "test-1", "200m", "500", "", []v1.ContainerPort{{HostPort: 90}})
@@ -485,7 +473,7 @@ func TestAddPodWillReplaceAssumed(t *testing.T) {
defer cancel()
cache := newCache(ctx, time.Second, nil)
for _, podToAssume := range test.podsToAssume {
if err := assumeAndFinishBinding(logger, cache, podToAssume, now); err != nil {
if err := cache.AssumePod(logger, podToAssume); err != nil {
t.Fatalf("assumePod failed: %v", err)
}
}
@@ -776,14 +764,13 @@ func TestForgetPod(t *testing.T) {
nodeName := "node"
basePod := makeBasePod(t, nodeName, "test", "100m", "500", "", []v1.ContainerPort{{HostIP: "127.0.0.1", HostPort: 80, Protocol: "TCP"}})
pods := []*v1.Pod{basePod}
now := time.Now()
logger, ctx := ktesting.NewTestContext(t)
ctx, cancel := context.WithCancel(ctx)
defer cancel()
cache := newCache(ctx, time.Second, nil)
for _, pod := range pods {
if err := assumeAndFinishBinding(logger, cache, pod, now); err != nil {
if err := cache.AssumePod(logger, pod); err != nil {
t.Fatalf("assumePod failed: %v", err)
}
isAssumed, err := cache.IsAssumedPod(pod)

View File

@@ -71,9 +71,6 @@ type Cache interface {
// After expiration, its information would be subtracted.
AssumePod(logger klog.Logger, pod *v1.Pod) error
// FinishBinding signals that cache for assumed pod can be expired
FinishBinding(logger klog.Logger, pod *v1.Pod) error
// ForgetPod removes an assumed pod from cache.
ForgetPod(logger klog.Logger, pod *v1.Pod) error

View File

@@ -1013,9 +1013,6 @@ func (sched *Scheduler) extendersBinding(logger klog.Logger, pod *v1.Pod, node s
}
func (sched *Scheduler) finishBinding(logger klog.Logger, fwk framework.Framework, assumed *v1.Pod, targetNode string, status *fwk.Status) {
if finErr := sched.Cache.FinishBinding(logger, assumed); finErr != nil {
utilruntime.HandleErrorWithLogger(logger, finErr, "Scheduler cache FinishBinding failed")
}
if !status.IsSuccess() {
logger.V(1).Info("Failed to bind pod", "pod", klog.KObj(assumed))
return