From 3cc7bfe934af4476e0d31b48adffa689c2bb41a0 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Mon, 1 Dec 2025 22:48:01 +0000 Subject: [PATCH] fix: match storage timeout errors without trailing slash The error pattern `/storage/` only matched storage content endpoints (`/storage/{name}/content`) but not the main storage list endpoint (`/nodes/{node}/storage`). This caused storage timeout errors like: Get ".../nodes/pve-100-224/storage": context deadline exceeded to incorrectly mark cluster nodes as unhealthy, even though the timeout was due to a slow cross-node storage query, not actual node connectivity issues. Fixes #754 --- pkg/proxmox/cluster_client.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/proxmox/cluster_client.go b/pkg/proxmox/cluster_client.go index 8093ab4..d87fa62 100644 --- a/pkg/proxmox/cluster_client.go +++ b/pkg/proxmox/cluster_client.go @@ -640,8 +640,8 @@ func (cc *ClusterClient) executeWithFailover(ctx context.Context, fn func(*Clien strings.Contains(errStr, "json: cannot unmarshal") || (strings.Contains(errStr, "storage '") && strings.Contains(errStr, "is not available on node")) || strings.Contains(errStr, "unexpected response format") || - (strings.Contains(errStr, "context deadline exceeded") && strings.Contains(errStr, "/storage/")) || - (strings.Contains(errStr, "Client.Timeout exceeded") && strings.Contains(errStr, "/storage/")) { + (strings.Contains(errStr, "context deadline exceeded") && strings.Contains(errStr, "/storage")) || + (strings.Contains(errStr, "Client.Timeout exceeded") && strings.Contains(errStr, "/storage")) { // This is likely a node-specific failure, not an endpoint failure // Return the error but don't mark the endpoint as unhealthy log.Debug().