thedotmack/claude-mem · warning
Health check failed
Error message
Health check failed
What it means
isHealthy() pings Chroma with chroma_list_collections {limit:1}; any throw is logged and reported as false. It is a cheap gate used to decide whether vector search may be used — false means 'degraded, do not use Chroma now', not a fatal state.
Source
Thrown at src/services/sync/ChromaMcpManager.ts:877
this.mutationTail = run.then(() => undefined, () => undefined);
try {
return await run;
} finally {
this.pendingMutationCalls -= 1;
}
}
private static isMutationTool(toolName: string): boolean {
return CHROMA_MUTATION_TOOL_PATTERN.test(toolName);
}
async isHealthy(): Promise<boolean> {
try {
await this.callTool('chroma_list_collections', { limit: 1 });
return true;
} catch (error) {
logger.warn('CHROMA_MCP', 'Health check failed', {
error: error instanceof Error ? error.message : String(error)
});
return false;
}
}
async probeSemanticSearch(): Promise<{
ok: boolean;
stage: 'connect' | 'list' | 'query' | 'done';
error?: string;
collections?: number;
queryLatencyMs?: number;
}> {
let collections: number | undefined;
try {
const listResult: any = await this.callTool('chroma_list_collections', { limit: 100 });
if (Array.isArray(listResult)) {View on GitHub (pinned to 8bc631a71a)
Solutions
- Follow up with probeSemanticSearch() for a staged diagnosis (connect, list, query) when false
- Check the chroma-mcp subprocess, uv environment, and recent CHROMA_MCP warnings
- Retry after reconnect; treat persistent false as degraded mode and rely on FTS/LIKE fallbacks
Defensive patterns
Strategy: validation
Validate before calling
if (!(await chromaManager.isHealthy())) {
// skip the vector path now; use FTS/LIKE search
} Prevention
- Gate every vector-search feature on isHealthy() at call time, not once at boot
- When false persists, escalate to probeSemanticSearch() for the failing stage
- Monitor chroma-mcp subprocess liveness alongside this check
When it happens
Trigger: Chroma subprocess not started or connectable, MCP handshake failure, a tool-level error during the list call, or the manager being disposed while the check runs.
Common situations: Immediately after startup before first connect; after a chroma-mcp crash; monitoring dashboards polling during shutdown windows.
Related errors
- Deep probe failed at list stage
- failed to kill prior chroma-mcp tree (best-effort)
- failed to kill in-flight chroma-mcp prewarm tree (best-effor
- Backfill failed: ${error instanceof Error ? error.message :
- Chroma query failed - connection lost: ${errorMessage}
AI-assisted analysis of thedotmack/claude-mem@8bc631a71a (2026-08-20).
Data as JSON: /api/errors/3da086e75d92406f.
Report an issue: GitHub.