From 246e2aedf5330457c3751dd97023fab07dd3db9b Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Tue, 4 Jun 2024 16:58:54 +0200 Subject: [PATCH] scheduler_perf: shut down apiserver clients before apiserver The cancellation of the context happened after the cleanup of the apiserver, so clients using that context were kept running. That wasn't the intent and causes a slow shutdown because the apiserver delays its shutdown when it has active clients. The fix is to create a new cancellation context and to use that for the clients. The automatic cancellation of it then happens before the apiserver cleanup. --- test/integration/scheduler_perf/util.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/integration/scheduler_perf/util.go b/test/integration/scheduler_perf/util.go index 8175f51486c..e8dc65fa04c 100644 --- a/test/integration/scheduler_perf/util.go +++ b/test/integration/scheduler_perf/util.go @@ -98,11 +98,10 @@ func mustSetupCluster(tCtx ktesting.TContext, config *config.KubeSchedulerConfig if err != nil { tCtx.Fatalf("start apiserver: %v", err) } + // Cleanup will be in reverse order: first the clients by canceling the + // child context (happens automatically), then the server. tCtx.Cleanup(server.TearDownFn) - - // Cleanup will be in reverse order: first the clients get cancelled, - // then the apiserver is torn down via the automatic cancelation of - // tCtx. + tCtx = ktesting.WithCancel(tCtx) // TODO: client connection configuration, such as QPS or Burst is configurable in theory, this could be derived from the `config`, need to // support this when there is any testcase that depends on such configuration.