From 59296c8446ccc2e8d3d4dbe784e2b6db6e4d631c Mon Sep 17 00:00:00 2001 From: Thomas Jungblut Date: Thu, 28 Aug 2025 12:48:07 +0200 Subject: [PATCH] OCPBUGS-60941: add individual context to the health check When one member is timing out, the others were also declared unhealthy due to the shared timeout being cancelled. This adds a new context with an individual timeout to each member health check. Signed-off-by: Thomas Jungblut --- pkg/etcdcli/health.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/etcdcli/health.go b/pkg/etcdcli/health.go index 431cdea227..5ef956c3e5 100644 --- a/pkg/etcdcli/health.go +++ b/pkg/etcdcli/health.go @@ -63,7 +63,12 @@ func GetMemberHealth(ctx context.Context, clipool *EtcdClientPool, etcdMembers [ } defer clipool.Return(cli) - memberHealth[i] = checkSingleMemberHealth(ctx, cli, member) + // Create an independent timeout context for each member health check + // This prevents one slow member from affecting other members' health checks + memberCtx, cancel := context.WithTimeout(ctx, DefaultClientTimeout) + defer cancel() + + memberHealth[i] = checkSingleMemberHealth(memberCtx, cli, member) }(i) }