mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-23 10:26:22 +00:00
scheduler: Remove FinishBinding from cache
This commit is contained in:
18
pkg/scheduler/backend/cache/cache.go
vendored
18
pkg/scheduler/backend/cache/cache.go
vendored
@@ -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 {
|
||||
|
||||
23
pkg/scheduler/backend/cache/cache_test.go
vendored
23
pkg/scheduler/backend/cache/cache_test.go
vendored
@@ -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)
|
||||
|
||||
3
pkg/scheduler/backend/cache/interface.go
vendored
3
pkg/scheduler/backend/cache/interface.go
vendored
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user