Change:
https://k8s-
There are no sig labels on this issue. Please by:<br(1) mentioning a sig: <br(2) specifying the label manually: <br<brNote: method (1) will trigger a notification to the team. You can find the team list and label list
might be a culprit, but maybe not
This could be related to how the test initializes the framework or cleans it up, maybe.
Another failure in the same run, not just this one test:
I'm not positive but the stack trace might be wrong due to inlining optimizations. rc.framework == nil was my first guess, but that would fail earlier in that method.
Framework AfterEach runs namespace deletion, which may mean that .Namespace is nil (if inlining is indeed present).
I am looking into this right now.
It's unrelated. I reverted from the current master HEAD locally (via ), then did and finally and it did not help. The test still fails with the same message "Expected <*v1.Initializers | 0x0: nil not to be nil" (location: )
Note that I have executed one of the initializers e2e test (not autoscaling), because it is one of the tests reported by https://k8s- as panicked.
Looking a bit further I found out that commit the test above as already failing.
I have just realized that I have discovered yesterday a race condition in ResourceConsumer implementation, and might actually make it worse. Let me quickly make a PR out of a fix.
Let me try to recap what I have found out so far: The test that is being referred to at the top of this issue () fails "out of the box" and probably deserves a separate issue to track it Other failing tests that look like they have a similar failure pattern (NPE) fail because of trying to send a "consume CPU" request to a non-existent pod (unrelated to above, as far as I can tell) PR might cause the effect above (and probably does) because it actually deletes the pods that should have been deleted However, the root cause is that there is a race condition inside ResourceConsumer that makes "consume CPU" requests being sometimes sent already after "CleanUp" got called (fix prepared in PR )
Initializer was fixed in a different PR, depending on what cluster you test on. , Andrzej Wasylkowski < :
Yeah, confirmed initializers test is now passing on GCE and disabled on GKE (which doesn't enable initializers configuration group yet) , Clayton Coleman <: The test that is being referred to at the top of this issue () fails "out of the box" and probably deserves a separate issue to track it Other failing tests that look like they have a similar failure pattern (NPE) fail because of trying to send a "consume CPU" request to a non-existent pod (unrelated to above, as far as I can tell) PR cause the effect above (and probably does) because it actually deletes the pods that should have been deleted However, the root cause is that there is a race condition inside ResourceConsumer that makes "consume CPU" requests being sometimes sent already after "CleanUp" got called (fix prepared in PR ) — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread
Clayton, can you assign this to me? I cannot do this myself.

Discussion:
"context" "fmt" "strconv" <ins> "sync" </ins> "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

stopCPU                  chan int stopMem                  chan int stopCustomMetric         chan int <ins> stopWaitGroup            sync.WaitGroup </ins> consumptionTimeInSeconds int sleepTime                time.Duration requestSizeInMillicores  int

func (rc *ResourceConsumer) makeConsumeCPURequests() { defer GinkgoRecover() <ins> rc.stopWaitGroup.Add(1) defer rc.stopWaitGroup.Done() </ins> sleepTime := time.Duration(0) millicores := 0 for {

func (rc *ResourceConsumer) makeConsumeMemRequests() { defer GinkgoRecover() <ins> rc.stopWaitGroup.Add(1) defer rc.stopWaitGroup.Done() </ins> sleepTime := time.Duration(0) megabytes := 0 for {

func (rc *ResourceConsumer) makeConsumeCustomMetric() { defer GinkgoRecover() <ins> rc.stopWaitGroup.Add(1) defer rc.stopWaitGroup.Done() </ins> sleepTime := time.Duration(0) delta := 0 for {

rc.stopCPU <- 0 rc.stopMem <- 0 rc.stopCustomMetric <- 0 <ins> rc.stopWaitGroup.Wait() </ins> } // Pause starts background goroutines responsible for consuming resources.

close(rc.stopCPU) close(rc.stopMem) close(rc.stopCustomMetric) <ins> rc.stopWaitGroup.Wait() </ins> // Wait some time to ensure all child goroutines are finished. time.Sleep(10 * time.Second) kind, err := kindOf(rc.kind)