diff --git a/src/observe.go b/src/observe.go index 4cafb0a..a7ce6d3 100644 --- a/src/observe.go +++ b/src/observe.go @@ -130,6 +130,12 @@ func FiniObservability() { } } +func ObserveError(err error) { + if hasSentry() { + go sentry.CaptureException(err) + } +} + type observedResponseWriter struct { inner http.ResponseWriter status int diff --git a/src/pages.go b/src/pages.go index 9455c03..efdf422 100644 --- a/src/pages.go +++ b/src/pages.go @@ -328,6 +328,7 @@ 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) { @@ -338,6 +339,7 @@ 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") @@ -511,9 +513,11 @@ 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: