Skip to content

feat: add dependency probes to /api/indexer/health - #557

Merged
greatest0fallt1me merged 3 commits into
Predictify-org:mainfrom
adesuwa-tech:feat/indexer-health-dependency-probe
Jul 27, 2026
Merged

feat: add dependency probes to /api/indexer/health#557
greatest0fallt1me merged 3 commits into
Predictify-org:mainfrom
adesuwa-tech:feat/indexer-health-dependency-probe

Conversation

@adesuwa-tech

Copy link
Copy Markdown
Contributor

Summary

Add Postgres and Soroban RPC dependency probes to the GET /api/indexer/health endpoint alongside the existing cursor lag check.

Changes

  • src/routes/indexer/health.ts: Added injectable dependency probes for database (Postgres SELECT 1) and Soroban RPC (getLatestLedger). Response now includes dependencies (database, sorobanRpc) with status/latency, correlationId, checkedAt, and preserves the existing data field with lag information. ETag is computed from the deterministic parts only (dependencies + data) to maintain stability across requests.

  • tests/indexerHealth.test.ts: Rewrote tests to use injectable deps pattern (following webhooksHealth.test.ts). Added 19 new test cases covering dependency probe status, overall status computation, correlationId, and error handling.

  • tests/indexerHealthEtag.test.ts: Updated to use injectable deps pattern. All 12 ETag/conditional GET tests pass with the new response shape.

  • README.md: Updated endpoint description to reflect the new dependency probe functionality.

Response shape

{
  "status": "ok" | "degraded" | "down",
  "correlationId": "<uuid>",
  "checkedAt": "<ISO-8601>",
  "dependencies": {
    "database":   { "status": "ok"|"down", "latencyMs": <n>, "error?": "..." },
    "sorobanRpc": { "status": "ok"|"down", "latencyMs": <n>, "error?": "..." }
  },
  "data": {
    "status":    "ok" | "degraded" | "down",
    "cursor":    <n>,
    "chainTip":  <n> | null,
    "lag":       <n> | null,
    "maxLag":    <n>
  }
}
  • Overall status is "down" if any dependency is down or chain tip is unreachable, "degraded" if lag exceeds threshold, "ok" otherwise.
  • HTTP status is always 200 (for uptime probe compatibility).

Closes #488

@drips-wave

drips-wave Bot commented Jul 27, 2026

Copy link
Copy Markdown

@adesuwa-tech Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@greatest0fallt1me
greatest0fallt1me merged commit 5113281 into Predictify-org:main Jul 27, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add /api/indexer/health dependency probe

2 participants