Commit 450a71cd authored by k8s-merge-robot's avatar k8s-merge-robot Committed by GitHub

Merge pull request #29093 from wojtek-t/fix_scheduler_crash

Automatic merge from submit-queue Fix crashes in schedulercache Fix #29090 @davidopp
parents 5f766748 78101ac5
...@@ -149,6 +149,7 @@ func (cache *schedulerCache) ForgetPod(pod *api.Pod) error { ...@@ -149,6 +149,7 @@ func (cache *schedulerCache) ForgetPod(pod *api.Pod) error {
if err != nil { if err != nil {
return err return err
} }
delete(cache.assumedPods, key)
delete(cache.podStates, key) delete(cache.podStates, key)
default: default:
return fmt.Errorf("pod state wasn't assumed but get forgotten. Pod key: %v", key) return fmt.Errorf("pod state wasn't assumed but get forgotten. Pod key: %v", key)
......
...@@ -457,6 +457,36 @@ func TestRemovePod(t *testing.T) { ...@@ -457,6 +457,36 @@ func TestRemovePod(t *testing.T) {
} }
} }
func TestForgetPod(t *testing.T) {
nodeName := "node"
basePod := makeBasePod(nodeName, "test", "100m", "500", []api.ContainerPort{{HostPort: 80}})
tests := []struct {
pods []*api.Pod
}{{
pods: []*api.Pod{basePod},
}}
now := time.Now()
ttl := 10 * time.Second
for i, tt := range tests {
cache := newSchedulerCache(ttl, time.Second, nil)
for _, pod := range tt.pods {
if err := cache.assumePod(pod, now); err != nil {
t.Fatalf("assumePod failed: %v", err)
}
}
for _, pod := range tt.pods {
if err := cache.ForgetPod(pod); err != nil {
t.Fatalf("ForgetPod failed: %v", err)
}
}
cache.cleanupAssumedPods(now.Add(2 * ttl))
if n := cache.nodes[nodeName]; n != nil {
t.Errorf("#%d: expecting pod deleted and nil node info, get=%s", i, n)
}
}
}
func BenchmarkList1kNodes30kPods(b *testing.B) { func BenchmarkList1kNodes30kPods(b *testing.B) {
cache := setupCacheOf1kNodes30kPods(b) cache := setupCacheOf1kNodes30kPods(b)
b.ResetTimer() b.ResetTimer()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment