From 33e400eb8889a092ef3233b2ebf167c28d262054 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 22 Dec 2025 00:38:21 -0800 Subject: [PATCH] Refactor handleOutgoing to eliminate duplicate error handling code Extract error handling and cleanup logic into helper functions to avoid duplication in nested select statements. This improves maintainability and reduces the risk of inconsistencies when updating error handling logic. --- weed/worker/client.go | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/weed/worker/client.go b/weed/worker/client.go index 27633ecdb..3eb892e86 100644 --- a/weed/worker/client.go +++ b/weed/worker/client.go @@ -356,35 +356,41 @@ func handleOutgoing( close(errCh) }() + // Helper function to handle stream errors and cleanup + handleStreamError := func(err error) { + if err != nil { + glog.Errorf("Failed to send message to admin: %v", err) + cmds <- grpcCommand{action: ActionStreamError, data: err} + } + } + + // Helper function to cleanup resources + cleanup := func() { + close(msgCh) + <-errCh + } + for { select { case <-streamExit: - close(msgCh) - <-errCh + cleanup() return case err := <-errCh: - if err != nil { - glog.Errorf("Failed to send message to admin: %v", err) - cmds <- grpcCommand{action: ActionStreamError, data: err} - } + handleStreamError(err) return case msg, ok := <-outgoing: if !ok { - close(msgCh) - <-errCh + cleanup() return } select { case msgCh <- msg: + // Message queued successfully case <-streamExit: - close(msgCh) - <-errCh + cleanup() return case err := <-errCh: - if err != nil { - glog.Errorf("Failed to send message to admin: %v", err) - cmds <- grpcCommand{action: ActionStreamError, data: err} - } + handleStreamError(err) return } }