Files
meshcore-analyzer/cmd
clawbot 0eab5f8f0e fix(#1735): surface async-migration errors on healthz/perf + propagate progress write failures
Group A from PR #1735 round-1 review (must-fix #1, #5, #6, #7).

- cmd/server/healthz.go: on readAsyncMigrations error, include the
  message in the JSON body as async_migrations_error AND keep
  async_migrations_running=true. Fail closed for warm-up: if we can't
  read the bookkeeping table, treat the system as possibly still
  warming up rather than declaring 'all clear'.
- cmd/server/async_migrations.go handlePerfAsyncMigrations: return
  HTTP 500 with the error body on readAsyncMigrations failure instead
  of silently returning an empty list. (Empty list is a meaningful
  operator signal; a query failure must be visible.)
- cmd/server/routes.go /api/perf: log the readAsyncMigrations error
  and surface it via X-Async-Migrations-Error response header so the
  rest of the perf payload still flows.
- cmd/server/async_migrations.go: delete the unread
  asyncMigrationsCacheErr field (finding #5).
- cmd/server/async_migrations.go parseAsyncTime: propagate parse
  errors to the caller; readAsyncMigrationsRaw now appends them to
  ErrorMessage so unparseable timestamps don't silently produce 0s.
- cmd/ingestor/async_migration_progress.go recordAsyncMigrationProgressEx:
  check RowsAffected(); 0 rows updated -> error (bookkeeping row
  missing). cmd/ingestor/db.go: track in-loop progress write failures,
  log them, and treat a failed TERMINAL progress write as a failed
  migration (counts are no longer trustworthy).
2026-06-16 19:58:34 +00:00
..