chore(extraction): document sidecar dev alerts
What changed: - Added a scoped no-console justification for development-only sidecar health alerts. Warning impact: - extraction-service sidecar-monitor no-console warnings: 3 -> 0. - Workspace lint: 93 -> 90 warnings. Verification: - pnpm --filter @lysnrai/extraction-service build - pnpm --filter @lysnrai/extraction-service test - pnpm --filter @lysnrai/extraction-service exec eslint . --ext .ts,.tsx - pnpm lint
This commit is contained in:
parent
e940d067c3
commit
9cd7089f97
@ -130,7 +130,8 @@ function updateState(check: HealthCheck): void {
|
|||||||
|
|
||||||
// Determine status
|
// Determine status
|
||||||
if (state.consecutiveFailures >= ALERT_THRESHOLD) {
|
if (state.consecutiveFailures >= ALERT_THRESHOLD) {
|
||||||
const newStatus: SidecarHealthStatus = state.consecutiveFailures >= ALERT_THRESHOLD * 2 ? 'unhealthy' : 'degraded';
|
const newStatus: SidecarHealthStatus =
|
||||||
|
state.consecutiveFailures >= ALERT_THRESHOLD * 2 ? 'unhealthy' : 'degraded';
|
||||||
|
|
||||||
if (state.current !== newStatus) {
|
if (state.current !== newStatus) {
|
||||||
state.current = newStatus;
|
state.current = newStatus;
|
||||||
@ -236,13 +237,15 @@ export function getHealthSummary(): {
|
|||||||
} {
|
} {
|
||||||
const recent = state.history.slice(0, 20);
|
const recent = state.history.slice(0, 20);
|
||||||
const responseTimes = recent.filter(h => h.status === 'healthy').map(h => h.responseTimeMs);
|
const responseTimes = recent.filter(h => h.status === 'healthy').map(h => h.responseTimeMs);
|
||||||
const avgResponseTimeMs = responseTimes.length > 0
|
const avgResponseTimeMs =
|
||||||
? Math.round(responseTimes.reduce((a, b) => a + b, 0) / responseTimes.length)
|
responseTimes.length > 0
|
||||||
: 0;
|
? Math.round(responseTimes.reduce((a, b) => a + b, 0) / responseTimes.length)
|
||||||
|
: 0;
|
||||||
|
|
||||||
const availability = state.totalChecks > 0
|
const availability =
|
||||||
? Math.round(((state.totalChecks - state.totalFailures) / state.totalChecks) * 1000) / 10
|
state.totalChecks > 0
|
||||||
: 100;
|
? Math.round(((state.totalChecks - state.totalFailures) / state.totalChecks) * 1000) / 10
|
||||||
|
: 100;
|
||||||
|
|
||||||
// Calculate uptime percentage based on consecutive successes/failures
|
// Calculate uptime percentage based on consecutive successes/failures
|
||||||
const uptime = state.current === 'healthy' ? 100 : state.current === 'degraded' ? 50 : 0;
|
const uptime = state.current === 'healthy' ? 100 : state.current === 'degraded' ? 50 : 0;
|
||||||
@ -277,23 +280,34 @@ export function resetHealthState(): void {
|
|||||||
// ── Default console alerting (development) ──────────────────────
|
// ── Default console alerting (development) ──────────────────────
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
|
/* eslint-disable no-console -- Development-only sidecar health alerts are intentionally surfaced in the local service console. */
|
||||||
alertConfig = {
|
alertConfig = {
|
||||||
onUnhealthy: (state, check) => {
|
onUnhealthy: (state, check) => {
|
||||||
console.error(`[sidecar-health] ALERT: Sidecar unhealthy after ${state.consecutiveFailures} consecutive failures`, {
|
console.error(
|
||||||
error: check.error,
|
`[sidecar-health] ALERT: Sidecar unhealthy after ${state.consecutiveFailures} consecutive failures`,
|
||||||
responseTime: check.responseTimeMs,
|
{
|
||||||
});
|
error: check.error,
|
||||||
|
responseTime: check.responseTimeMs,
|
||||||
|
}
|
||||||
|
);
|
||||||
},
|
},
|
||||||
onRecovered: (state, check) => {
|
onRecovered: (state, check) => {
|
||||||
console.log(`[sidecar-health] RECOVERED: Sidecar is healthy after ${state.consecutiveSuccesses} consecutive successes`, {
|
console.log(
|
||||||
responseTime: check.responseTimeMs,
|
`[sidecar-health] RECOVERED: Sidecar is healthy after ${state.consecutiveSuccesses} consecutive successes`,
|
||||||
});
|
{
|
||||||
|
responseTime: check.responseTimeMs,
|
||||||
|
}
|
||||||
|
);
|
||||||
},
|
},
|
||||||
onDegraded: (state, check) => {
|
onDegraded: (state, check) => {
|
||||||
console.warn(`[sidecar-health] WARNING: Sidecar degraded after ${state.consecutiveFailures} failures`, {
|
console.warn(
|
||||||
error: check.error,
|
`[sidecar-health] WARNING: Sidecar degraded after ${state.consecutiveFailures} failures`,
|
||||||
responseTime: check.responseTimeMs,
|
{
|
||||||
});
|
error: check.error,
|
||||||
|
responseTime: check.responseTimeMs,
|
||||||
|
}
|
||||||
|
);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
/* eslint-enable no-console */
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user