From 99b87226a17d33e31661360ab556777d5cef024a Mon Sep 17 00:00:00 2001 From: Catherine Date: Fri, 17 Oct 2025 10:56:29 +0000 Subject: [PATCH] Move update error observation to a single place. NFC --- src/pages.go | 4 ---- src/update.go | 26 +++++++++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/pages.go b/src/pages.go index 024d119..6f4000e 100644 --- a/src/pages.go +++ b/src/pages.go @@ -328,7 +328,6 @@ func putPage(w http.ResponseWriter, r *http.Request) error { switch result.outcome { case UpdateError: - ObserveError(result.err) if errors.Is(result.err, ErrManifestTooLarge) { w.WriteHeader(http.StatusRequestEntityTooLarge) } else if errors.Is(result.err, errArchiveFormat) { @@ -339,7 +338,6 @@ func putPage(w http.ResponseWriter, r *http.Request) error { w.WriteHeader(http.StatusServiceUnavailable) } case UpdateTimeout: - ObserveError(fmt.Errorf("update timeout")) w.WriteHeader(http.StatusGatewayTimeout) case UpdateNoChange: w.Header().Add("X-Pages-Update", "no-change") @@ -504,11 +502,9 @@ func postPage(w http.ResponseWriter, r *http.Request) error { switch result.outcome { case UpdateError: - ObserveError(result.err) w.WriteHeader(http.StatusServiceUnavailable) fmt.Fprintf(w, "update error: %s\n", result.err) case UpdateTimeout: - ObserveError(fmt.Errorf("update timeout")) w.WriteHeader(http.StatusGatewayTimeout) fmt.Fprintln(w, "update timeout") case UpdateNoChange: diff --git a/src/update.go b/src/update.go index a109f6e..839e282 100644 --- a/src/update.go +++ b/src/update.go @@ -82,7 +82,7 @@ func UpdateFromRepository( webRoot string, repoURL string, branch string, -) UpdateResult { +) (result UpdateResult) { span, ctx := ObserveFunction(ctx, "UpdateFromRepository", "repo.url", repoURL) defer span.Finish() @@ -90,12 +90,15 @@ func UpdateFromRepository( manifest, err := FetchRepository(ctx, repoURL, branch) if errors.Is(err, context.DeadlineExceeded) { - return UpdateResult{UpdateTimeout, nil, fmt.Errorf("update timeout")} + result = UpdateResult{UpdateTimeout, nil, fmt.Errorf("update timeout")} } else if err != nil { - return UpdateResult{UpdateError, nil, err} + result = UpdateResult{UpdateError, nil, err} } else { - return Update(ctx, webRoot, manifest) + result = Update(ctx, webRoot, manifest) } + + observeUpdateResult(result) + return result } var errArchiveFormat = errors.New("unsupported archive format") @@ -105,7 +108,7 @@ func UpdateFromArchive( webRoot string, contentType string, reader io.Reader, -) UpdateResult { +) (result UpdateResult) { var manifest *Manifest var err error @@ -128,8 +131,17 @@ func UpdateFromArchive( if err != nil { log.Printf("update %s err: %s", webRoot, err) - return UpdateResult{UpdateError, nil, err} + result = UpdateResult{UpdateError, nil, err} } else { - return Update(ctx, webRoot, manifest) + result = Update(ctx, webRoot, manifest) + } + + observeUpdateResult(result) + return +} + +func observeUpdateResult(result UpdateResult) { + if result.err != nil { + ObserveError(result.err) } }