observer: fix gateway health probe — text/plain not JSON
The startup health check in observer.ts:645 did fetch().then(r => r.json()) against the gateway /health endpoint, which returns text/plain "lakehouse ok" not JSON. r.json() throws, .catch swallows to null, observer concludes "gateway unreachable" and exits. Combined with systemd Restart=on-failure this produced a 5-second crash loop on every boot of matrix-test. Fix: r.ok ? r.text() : null — keeps the same null-on-failure contract for the existing if (!health) guard while accepting the actual content type. Sealed in pathway_memory as TypeConfusion:fetch-health-json (trace at matrix_handover_validate|mcp-server/observer.ts|service_crash_loop) so the matrix index preempts this on any future deploy probe. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
42448c7db5
commit
5db0c581d9
@ -642,7 +642,7 @@ async function main() {
|
|||||||
console.error(`[observer] started — cycle=${CYCLE_SECS}s, gateway=${GATEWAY}, port=${OBSERVER_PORT}`);
|
console.error(`[observer] started — cycle=${CYCLE_SECS}s, gateway=${GATEWAY}, port=${OBSERVER_PORT}`);
|
||||||
|
|
||||||
// Run a health check first
|
// Run a health check first
|
||||||
const health = await fetch(`${GATEWAY}/health`).then(r => r.json()).catch(() => null);
|
const health = await fetch(`${GATEWAY}/health`).then(r => r.ok ? r.text() : null).catch(() => null);
|
||||||
if (!health) {
|
if (!health) {
|
||||||
console.error("[observer] gateway unreachable — exiting");
|
console.error("[observer] gateway unreachable — exiting");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user