Skip to content

fix(health): add /health/ready to srv-qa — 404 crash-loop aborted MTA deploy (#2975) - #3000

Merged
jung-thomas merged 1 commit into
DEVfrom
worktree-fix-qa-health-ready-2975
Nov 2, 2026
Merged

jung-thomas merged 1 commit into
DEVfrom
worktree-fix-qa-health-ready-2975

Conversation

@jung-thomas

Copy link
Copy Markdown
Contributor

Problem

Follow-on to #2995. The 2026-11-02 DEV deploy got past the main app (tutorials-srv started cleanly — #2995's HANA fix works) but aborted because tutorials-srv-qa crash-looped:

Instance never healthy after 1m: GET /health/ready on port 8080: status 404
Error starting application "tutorials-srv-qa": Some instances have crashed.
...Process failed.

The #2975 batch set srv-qa's CF startup health check to http /health/ready (mta.yaml:199, parity with tutorials-srv) but never added that route to srv-qa/server.js — it only has /healthz and /health/db. CF's probe 404s → srv-qa never healthy → MTA deploy aborts.

Fix

  • Add /health/ready to srv-qa/server.js. srv-qa has no scheduler, so readiness is DB-only: ready ⇔ a dialect-safe DB ping succeeds (SELECT 1 FROM DUMMY on HANA — bare SELECT 1 is a HANA syntax error; bare SELECT 1 on SQLite).
  • Make /health/db dialect-safe too (it hardcoded FROM DUMMY, broken on local SQLite).
  • Unit tests: HANA ping form, SQLite ping form, DB-down → 503, no-db → 503.

Why it matters

Without this, the DEV→main release (carrying #2992 draft fix + #2975 readiness gate + others) cannot deploy — the MTA aborts on srv-qa every time.

Related: #2975, #2995.

🤖 Generated with Claude Code

…QA, aborting MTA deploy (#2975)

The #2975 batch set srv-qa's CF startup health check to http /health/ready
(mta.yaml:199, parity with tutorials-srv) but never added that route to
srv-qa/server.js — it only has /healthz and /health/db. So CF's probe got a
404, srv-qa crash-looped (3 retries), and the ENTIRE MTA deploy aborted even
though tutorials-srv itself started fine. (Observed on the 2026-11-02 DEV
deploy.)

srv-qa has no scheduler, so its readiness is DB-only: ready ⇔ a dialect-safe
HANA ping (SELECT 1 FROM DUMMY — a bare SELECT 1 is a HANA syntax error)
succeeds. Also made /health/db dialect-safe (it hardcoded FROM DUMMY, which
breaks on local SQLite). Unit tests cover both dialects + the down path.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant