chore: expose pid + uptime on /health for crash-detection monitors
Adds `pid` and `uptime` fields to the /health response so external monitors (and the local E2E watchdog) can detect a silent process restart between two checks — e.g. an unhandled rejection that crashes Node and Docker quietly relaunches the container. Also adds .gitignore patterns for a local-only E2E suite that lives in tests/e2e/local/ on individual machines and is never pushed.
This commit is contained in:
@@ -100,6 +100,12 @@ backup/
|
|||||||
# Local artifacts from browser tooling
|
# Local artifacts from browser tooling
|
||||||
.playwright-mcp/
|
.playwright-mcp/
|
||||||
|
|
||||||
|
# Local-only E2E suite (never pushed; runs as pre-push gate on this machine)
|
||||||
|
tests/e2e/local/
|
||||||
|
playwright-local-results/
|
||||||
|
e2e-test.log
|
||||||
|
scripts/e2e-local.sh
|
||||||
|
|
||||||
# Local SQLite files in backend
|
# Local SQLite files in backend
|
||||||
backend/*.sqlite*
|
backend/*.sqlite*
|
||||||
backend/*.db
|
backend/*.db
|
||||||
|
|||||||
+8
-5
@@ -486,21 +486,24 @@ app.get('/robots.txt', async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Health check endpoint
|
// Health check endpoint. `pid` + `uptime` let monitors (and the local E2E
|
||||||
|
// watchdog) detect a silent process restart between two checks.
|
||||||
app.get('/health', async (req, res) => {
|
app.get('/health', async (req, res) => {
|
||||||
try {
|
try {
|
||||||
// Check database connectivity
|
|
||||||
await db.raw('SELECT 1');
|
await db.raw('SELECT 1');
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
status: 'ok',
|
status: 'ok',
|
||||||
timestamp: new Date().toISOString()
|
timestamp: new Date().toISOString(),
|
||||||
|
pid: process.pid,
|
||||||
|
uptime: process.uptime()
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('Health check failed:', error);
|
logger.error('Health check failed:', error);
|
||||||
res.status(503).json({
|
res.status(503).json({
|
||||||
status: 'error',
|
status: 'error',
|
||||||
timestamp: new Date().toISOString()
|
timestamp: new Date().toISOString(),
|
||||||
|
pid: process.pid,
|
||||||
|
uptime: process.uptime()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user