fix(api): return JSON 500 when bucketed telemetry query fails

The bucketed branch declared a new err with :=, so a store error never
reached the outer check and the handler dereferenced a nil telemetry.
This commit is contained in:
MrAlders0n
2026-09-10 07:21:47 -04:00
parent d202205659
commit 2082e5d5dc
2 changed files with 25 additions and 1 deletions
+2 -1
View File
@@ -222,7 +222,8 @@ func getObserverTelemetry(reader api.Reader) http.HandlerFunc {
if bucketHours == 0 {
telemetry, err = reader.GetObserverTelemetry(r.Context(), observerID, since, until, afterID)
} else {
points, err := reader.GetObserverTelemetryBucketed(r.Context(), observerID, since, until, bucketHours)
var points []api.ObserverTelemetryPoint
points, err = reader.GetObserverTelemetryBucketed(r.Context(), observerID, since, until, bucketHours)
if err == nil {
telemetry = &api.ObserverTelemetry{Points: points}
}
+23
View File
@@ -145,6 +145,29 @@ func TestGetObserverTelemetry_Bucketed_OK(t *testing.T) {
}
}
func TestGetObserverTelemetry_Bucketed_StoreError(t *testing.T) {
observerID := uuid.MustParse("00000000-0000-0000-0000-000000000001")
r := chi.NewRouter()
r.Get("/observers/{observerId}/telemetry", getObserverTelemetry(stubReader{
getObserverTelemetryBucketed: func(_ context.Context, _ uuid.UUID, _, _ time.Time, _ int32) ([]api.ObserverTelemetryPoint, error) {
return nil, errors.New("boom")
},
}))
req := httptest.NewRequest(http.MethodGet, "/observers/"+observerID.String()+"/telemetry?interval=6h", nil)
w := httptest.NewRecorder()
r.ServeHTTP(w, req)
if w.Code != http.StatusInternalServerError {
t.Fatalf("expected 500, got %d", w.Code)
}
var body map[string]APIError
if err := json.NewDecoder(w.Body).Decode(&body); err != nil {
t.Fatalf("expected JSON error body, got %q: %v", w.Body.String(), err)
}
if body["error"].Code != "internal_server_error" {
t.Errorf("expected internal_server_error, got %q", body["error"].Code)
}
}
func TestListObserverAdverts_OK(t *testing.T) {
observerID := uuid.MustParse("00000000-0000-0000-0000-000000000001")
r := chi.NewRouter()