0xMiden / 0xMiden/note-transport-service
Health service reports SERVING unconditionally regardless of DB state
- Langage dominant
- Rust
- Étoiles
- 3
- Forks
- 10
- Merge moyen
- 2 h 23 min
- PR mergées (30 j)
- 4
Description
Severity: high.
### Summary
`health_reporter.set_serving::<…>()` is called once at startup (`crates/node/src/node/grpc/mod.rs:100-101`) and the reporter is then dropped and never consulted again. There is no readiness probe and no NOT_SERVING transition.
### Impact
A wedged/corrupt DB, a full disk, or an exhausted connection pool leaves the pod reporting healthy; load balancers keep routing traffic into a black hole. (The health service existing at all is good — this is about keeping it truthful.)
### Recommendation
Keep the reporter, run a periodic readiness probe (`SELECT 1` via the pool) that toggles serving status, and set NOT_SERVING during shutdown (ties into the graceful-shutdown issue).
---
Part of #114.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Le rapporteur d'état est initialisé dans crates/node/src/node/grpc/mod.rs lignes 100-101. Étudiez le module health_reporter pour comprendre son API. Implémentez une sonde de préparation périodique qui exécute une requête 'SELECT 1' via le pool de connexions à la base de données. Intégrez cette sonde pour basculer l'état de service et assurez-vous que NOT_SERVING est défini lors de l'arrêt gracieux. Les tests impliqueront de simuler des pannes de base de données.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Domaine
- backend, observability
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Calme
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 55/100