From 62a2b0015a41bd953820b74e2295914a846b9c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E6=99=BA=E8=B6=850668000959?= Date: Thu, 25 Jun 2026 15:38:41 +0800 Subject: [PATCH 1/2] fix: explicitly ignore Close() errors in error paths and retry loops --- pkg/tools/shell.go | 12 ++++++------ pkg/updater/updater.go | 26 +++++++++++++------------- pkg/utils/http_retry.go | 4 ++-- pkg/utils/media.go | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/pkg/tools/shell.go b/pkg/tools/shell.go index 85bdcb8c..7e5f6489 100644 --- a/pkg/tools/shell.go +++ b/pkg/tools/shell.go @@ -569,7 +569,7 @@ func (t *ExecTool) runBackground(ctx context.Context, command, cwd string, ptyEn // with synchronous exec runs. if err := isolation.Start(cmd); err != nil { if session.ptyMaster != nil { - session.ptyMaster.Close() + _ = session.ptyMaster.Close() } return ErrorResult(fmt.Sprintf("failed to start command: %v", err)) } @@ -696,11 +696,11 @@ func (t *ExecTool) runBackground(ctx context.Context, command, cwd string, ptyEn } } - // All pipes closed, get exit status - if stdinWriter != nil { - stdinWriter.Close() - } - cmd.Wait() + // All pipes closed, get exit status + if stdinWriter != nil { + _ = stdinWriter.Close() + } + cmd.Wait() session.mu.Lock() if cmd.ProcessState != nil { diff --git a/pkg/updater/updater.go b/pkg/updater/updater.go index f8fc29fd..b6cdc183 100644 --- a/pkg/updater/updater.go +++ b/pkg/updater/updater.go @@ -574,19 +574,19 @@ func extractZip(archivePath, destDir string) error { if err != nil { return err } - out, err := os.OpenFile(target, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, f.FileInfo().Mode()) - if err != nil { - rc.Close() - return err - } - if _, err := io.Copy(out, rc); err != nil { - rc.Close() - out.Close() - return err - } - if err := rc.Close(); err != nil { - out.Close() - return fmt.Errorf("close zip entry reader: %w", err) + out, err := os.OpenFile(target, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, f.FileInfo().Mode()) + if err != nil { + _ = rc.Close() + return err + } + if _, err := io.Copy(out, rc); err != nil { + _ = rc.Close() + _ = out.Close() + return err + } + if err := rc.Close(); err != nil { + _ = out.Close() + return fmt.Errorf("close zip entry reader: %w", err) } if err := out.Close(); err != nil { return fmt.Errorf("close extracted file %q: %w", target, err) diff --git a/pkg/utils/http_retry.go b/pkg/utils/http_retry.go index 514f9781..678404f2 100644 --- a/pkg/utils/http_retry.go +++ b/pkg/utils/http_retry.go @@ -26,7 +26,7 @@ func DoRequestWithRetry(client *http.Client, req *http.Request) (*http.Response, for i := range maxRetries { if i > 0 && resp != nil { - resp.Body.Close() + _ = resp.Body.Close() } resp, err = client.Do(req) @@ -42,7 +42,7 @@ func DoRequestWithRetry(client *http.Client, req *http.Request) (*http.Response, if i < maxRetries-1 { if err = sleepWithCtx(req.Context(), retryDelayForAttempt(resp, i)); err != nil { if resp != nil { - resp.Body.Close() + _ = resp.Body.Close() } return nil, fmt.Errorf("failed to sleep: %w", err) } diff --git a/pkg/utils/media.go b/pkg/utils/media.go index e52c7e13..51d4b81e 100644 --- a/pkg/utils/media.go +++ b/pkg/utils/media.go @@ -176,7 +176,7 @@ func DownloadFile(urlStr, filename string, opts DownloadOptions) string { } if _, err := io.Copy(out, resp.Body); err != nil { - out.Close() + _ = out.Close() os.Remove(localPath) logger.ErrorCF(opts.LoggerPrefix, "Failed to write file", map[string]any{ "error": err.Error(), From 7ee4ee3b64c0c8f199170972308c109486963467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E6=99=BA=E8=B6=850668000959?= Date: Thu, 25 Jun 2026 15:53:00 +0800 Subject: [PATCH 2/2] fix: correct indentation in shell.go and updater.go for gci linter --- pkg/tools/shell.go | 10 +++++----- pkg/updater/updater.go | 26 +++++++++++++------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pkg/tools/shell.go b/pkg/tools/shell.go index 7e5f6489..873d4fcb 100644 --- a/pkg/tools/shell.go +++ b/pkg/tools/shell.go @@ -696,11 +696,11 @@ func (t *ExecTool) runBackground(ctx context.Context, command, cwd string, ptyEn } } - // All pipes closed, get exit status - if stdinWriter != nil { - _ = stdinWriter.Close() - } - cmd.Wait() + // All pipes closed, get exit status + if stdinWriter != nil { + _ = stdinWriter.Close() + } + cmd.Wait() session.mu.Lock() if cmd.ProcessState != nil { diff --git a/pkg/updater/updater.go b/pkg/updater/updater.go index b6cdc183..b50740ac 100644 --- a/pkg/updater/updater.go +++ b/pkg/updater/updater.go @@ -574,19 +574,19 @@ func extractZip(archivePath, destDir string) error { if err != nil { return err } - out, err := os.OpenFile(target, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, f.FileInfo().Mode()) - if err != nil { - _ = rc.Close() - return err - } - if _, err := io.Copy(out, rc); err != nil { - _ = rc.Close() - _ = out.Close() - return err - } - if err := rc.Close(); err != nil { - _ = out.Close() - return fmt.Errorf("close zip entry reader: %w", err) + out, err := os.OpenFile(target, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, f.FileInfo().Mode()) + if err != nil { + _ = rc.Close() + return err + } + if _, err := io.Copy(out, rc); err != nil { + _ = rc.Close() + _ = out.Close() + return err + } + if err := rc.Close(); err != nil { + _ = out.Close() + return fmt.Errorf("close zip entry reader: %w", err) } if err := out.Close(); err != nil { return fmt.Errorf("close extracted file %q: %w", target, err)