fix: use /api/health instead of /api/readiness for hook health checks
Fixes the "Worker did not become ready within 15 seconds" timeout issue. Root cause: isWorkerHealthy() and waitForHealth() were checking /api/readiness which returns 503 until full initialization completes (including MCP connection which can take 5+ minutes). Hooks only have 15 seconds timeout. Solution: Use /api/health (liveness check) which returns 200 as soon as the HTTP server is listening. This is sufficient for hook communication since the worker can accept requests while background initialization continues. Changes: - src/shared/worker-utils.ts: Change /api/readiness to /api/health in isWorkerHealthy() - src/services/infrastructure/HealthMonitor.ts: Change /api/readiness to /api/health in waitForHealth() - tests/infrastructure/health-monitor.test.ts: Update test to expect /api/health Fixes #811, #772, #729 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -98,16 +98,18 @@ describe('HealthMonitor', () => {
|
||||
expect(callCount).toBeGreaterThanOrEqual(3);
|
||||
});
|
||||
|
||||
it('should check readiness endpoint not health endpoint', async () => {
|
||||
it('should check health endpoint for liveness', async () => {
|
||||
const fetchMock = mock(() => Promise.resolve({ ok: true } as Response));
|
||||
global.fetch = fetchMock;
|
||||
|
||||
await waitForHealth(37777, 1000);
|
||||
|
||||
// waitForHealth uses /api/readiness, not /api/health
|
||||
// waitForHealth uses /api/health (liveness), not /api/readiness
|
||||
// This is because hooks have 15-second timeout but full initialization can take 5+ minutes
|
||||
// See: https://github.com/thedotmack/claude-mem/issues/811
|
||||
const calls = fetchMock.mock.calls;
|
||||
expect(calls.length).toBeGreaterThan(0);
|
||||
expect(calls[0][0]).toBe('http://127.0.0.1:37777/api/readiness');
|
||||
expect(calls[0][0]).toBe('http://127.0.0.1:37777/api/health');
|
||||
});
|
||||
|
||||
it('should use default timeout when not specified', async () => {
|
||||
|
||||
Reference in New Issue
Block a user