From 3208d9ac8a45ffc4ca702d930cea1de0335e6215 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 c5bf52e5c1..8ea1068fde 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) }