Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 Fix issue with starting multiple test envs #1913

Commits on May 24, 2022

  1. Fix issue with starting multiple test envs

    When starting a single test environment [1], the control plane start-up
    logic [2] launches an etcd and kube-apiserver process. The start-up
    logic needs to bind these processes to multiple ports, and when none are
    configured in advance, the logic looks for unused ports, and then
    creates files in the user cache directory to reserve them (for example,
    [3]).
    
    However, the same logic used to reserve ports  also has logic that
    deletes files corresponding to "outdated" ports [4].
    
    Therefore, if there are multiple processes/threads starting a test
    environment, they may sometimes end up trying to delete the same file
    which causes a "file not found" error.
    
    This commit adds logic so that trying to start multiple test
    environments does not fail if more than one tries to delete the same
    file corresponding to an outdated port.
    
    [1] https://github.com/kubernetes-sigs/controller-runtime/blob/7fb8534b80339a5b8158cee3dc9e5f9439d679dc/pkg/envtest/server.go#L197
    [2] https://github.com/kubernetes-sigs/controller-runtime/blob/7fb8534b80339a5b8158cee3dc9e5f9439d679dc/pkg/internal/testing/controlplane/plane.go#L49
    [3] https://github.com/kubernetes-sigs/controller-runtime/blob/7fb8534b80339a5b8158cee3dc9e5f9439d679dc/pkg/internal/testing/controlplane/etcd.go#L120
    [4] https://github.com/kubernetes-sigs/controller-runtime/blob/7fb8534b80339a5b8158cee3dc9e5f9439d679dc/pkg/internal/testing/addr/manager.go#L64
    jcanseco authored and k8s-infra-cherrypick-robot committed May 24, 2022
    Copy the full SHA
    6c84577 View commit details
    Browse the repository at this point in the history