Azure / Azure/data-api-builder

[Bug]: Critical! GraphQL health checks are consistently slower than REST checks

Aperta
#3,567 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
2.x health-endpoint
Lingua principale
C#
Stelle
1.5k
Fork
370
Merge medio
3g 22h
PR unite (30g)
9

Descrizione

GraphQL entity health checks consistently take 1.5-2x longer than REST checks for the same entity, leading to false `Unhealthy` results when thresholds are set based on expected query time.

## Expected

Health checks for the same entity should have comparable response times regardless of the API surface (REST vs GraphQL), since both execute the same underlying SQL query.

## Actual

Observed across multiple test runs:

| Entity | REST (ms) | GraphQL (ms) | Ratio |
|--------|-----------|-------------|-------|
| Todo | 254-306 | 553-663 | ~2x |
| User | 255-306 | 552-663 | ~2x |
| Category | 237-306 | 570-663 | ~2x |
| Product | 306 | 663 | ~2x |

This means a `threshold-ms: 500` that comfortably passes REST checks will fail GraphQL checks on first call, making the overall health status `Unhealthy` despite the database being fine.

**Root cause:** The health check implementation makes real HTTP calls to its own REST and GraphQL endpoints. GraphQL has additional overhead (Hot Chocolate query pipeline, parsing, validation, resolver execution) compared to REST's direct controller action.

**Impact:** Users setting thresholds based on database query performance will see unexpected `Unhealthy` status. The `threshold-ms` effectively needs to account for the full middleware + framework overhead, not just DB time.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Riproduci gli health check per le entità Todo, User, Category e Product sia tramite REST sia tramite GraphQL, utilizzando lo stesso valore di threshold-ms. Traccia le chiamate HTTP effettive dell’implementazione dell’health check agli endpoint REST e GraphQL e confronta l’overhead del middleware e della pipeline delle query. Il lavoro è completato quando controlli equivalenti non producono più risultati Unhealthy falsi esclusivamente a causa della superficie dell’API.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp, graphql
Ambito
api, backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.