RC/RS: Fix ignoring inactive Pods.
This commit is contained in:
@@ -553,13 +553,13 @@ func (rsc *ReplicaSetController) syncReplicaSet(key string) error {
|
||||
// list all pods to include the pods that don't match the rs`s selector
|
||||
// anymore but has the stale controller ref.
|
||||
// TODO: Do the List and Filter in a single pass, or use an index.
|
||||
pods, err := rsc.podLister.Pods(rs.Namespace).List(labels.Everything())
|
||||
allPods, err := rsc.podLister.Pods(rs.Namespace).List(labels.Everything())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Ignore inactive pods.
|
||||
var filteredPods []*v1.Pod
|
||||
for _, pod := range pods {
|
||||
for _, pod := range allPods {
|
||||
if controller.IsPodActive(pod) {
|
||||
filteredPods = append(filteredPods, pod)
|
||||
}
|
||||
|
@@ -305,10 +305,16 @@ func TestSyncReplicaSetCreates(t *testing.T) {
|
||||
defer close(stopCh)
|
||||
manager, informers := testNewReplicaSetControllerFromClient(client, stopCh, BurstReplicas)
|
||||
|
||||
// A controller with 2 replicas and no pods in the store, 2 creates expected
|
||||
// A controller with 2 replicas and no active pods in the store.
|
||||
// Inactive pods should be ignored. 2 creates expected.
|
||||
labelMap := map[string]string{"foo": "bar"}
|
||||
rs := newReplicaSet(2, labelMap)
|
||||
informers.Extensions().V1beta1().ReplicaSets().Informer().GetIndexer().Add(rs)
|
||||
failedPod := newPod("failed-pod", rs, v1.PodFailed, nil, true)
|
||||
deletedPod := newPod("deleted-pod", rs, v1.PodRunning, nil, true)
|
||||
deletedPod.DeletionTimestamp = &metav1.Time{Time: time.Now()}
|
||||
informers.Core().V1().Pods().Informer().GetIndexer().Add(failedPod)
|
||||
informers.Core().V1().Pods().Informer().GetIndexer().Add(deletedPod)
|
||||
|
||||
fakePodControl := controller.FakePodControl{}
|
||||
manager.podControl = &fakePodControl
|
||||
|
Reference in New Issue
Block a user