SentryAgent.ai Developer
1b682c22b2
feat(phase-4): WS1 — Production Hardening (Redis rate limiting, DB pool, health endpoint, k6)
Rate limiting:
- Replace in-memory express-rate-limit with ioredis + rate-limiter-flexible (sliding window)
- Graceful fallback to RateLimiterMemory when Redis unreachable
- RATE_LIMIT_WINDOW_MS / RATE_LIMIT_MAX_REQUESTS env var config
- Retry-After header on 429 responses
- agentidp_rate_limit_hits_total Prometheus counter
Database pool:
- Explicit pg.Pool config via DB_POOL_MAX/MIN/IDLE_TIMEOUT_MS/CONNECTION_TIMEOUT_MS
- Defaults: max=20, min=2, idle=30s, conn timeout=5s
- agentidp_db_pool_active_connections + agentidp_db_pool_waiting_requests gauges
Health endpoint:
- GET /health/detailed — per-service status (database, Redis, Vault, OPA)
- healthy / degraded (>1000ms) / unreachable classification
- HTTP 200 (all healthy) / 207 (any degraded) / 503 (any unreachable)
Load tests:
- tests/load/ with k6 scenarios for agent registration (100 VUs), token issuance (1000 VUs), credential rotation (50 VUs)
- npm run load-test script
Tests: 586 passing, zero TypeScript errors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 04:20:37 +00:00
..
2026-03-31 00:07:41 +00:00
2026-03-29 06:13:41 +00:00
2026-04-02 04:20:37 +00:00
2026-04-02 04:20:37 +00:00
2026-04-02 04:20:37 +00:00
2026-03-31 00:41:53 +00:00
2026-04-02 04:20:37 +00:00
2026-04-02 04:20:37 +00:00
2026-03-31 00:41:53 +00:00
2026-04-02 04:20:37 +00:00
2026-03-31 00:41:53 +00:00
2026-03-31 00:41:53 +00:00
2026-03-30 00:29:32 +00:00
2026-03-31 00:07:41 +00:00
2026-03-31 00:07:41 +00:00
2026-03-31 00:41:53 +00:00
2026-03-28 23:02:11 +00:00