From 8f5b2584243a27c7e2c5004e54559dbfbe2d52f0 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Tue, 2 Dec 2025 15:26:40 +0000 Subject: [PATCH] perf: Cache lowercase error string in guest agent error handling Compute strings.ToLower(errStr) once and reuse errStrLower instead of calling ToLower three times on the same string in permission check. --- internal/monitoring/monitor_polling.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/monitoring/monitor_polling.go b/internal/monitoring/monitor_polling.go index 64d90ab..9828cba 100644 --- a/internal/monitoring/monitor_polling.go +++ b/internal/monitoring/monitor_polling.go @@ -502,6 +502,7 @@ func (m *Monitor) pollVMsWithNodes(ctx context.Context, instanceName string, cli if err != nil { // Handle errors errStr := err.Error() + errStrLower := strings.ToLower(errStr) log.Warn(). Str("instance", instanceName). Str("vm", vm.Name). @@ -530,7 +531,7 @@ func (m *Monitor) pollVMsWithNodes(ctx context.Context, instanceName string, cli Int("vmid", vm.VMID). Msg("Guest agent communication failed (API error 500). Install and start qemu-guest-agent in the VM") } else if (strings.Contains(errStr, "403") || strings.Contains(errStr, "401")) && - (strings.Contains(strings.ToLower(errStr), "permission") || strings.Contains(strings.ToLower(errStr), "forbidden") || strings.Contains(strings.ToLower(errStr), "not allowed")) { + (strings.Contains(errStrLower, "permission") || strings.Contains(errStrLower, "forbidden") || strings.Contains(errStrLower, "not allowed")) { // Only treat as permission-denied if we get explicit auth/permission error codes (401/403) // This distinguishes actual permission issues from guest agent unavailability diskStatusReason = "permission-denied"