Azure / Azure/data-api-builder

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

Abierto
#3,567 0 comentarios 0 reacciones 0 asignados Ver en GitHub
2.x health-endpoint
Lenguaje dominante
C#
Estrellas
1.5k
Forks
370
Merge medio
3 d 22 h
PR fusionados (30 d)
9

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Reproduce las comprobaciones de salud de las entidades Todo, User, Category y Product tanto mediante REST como mediante GraphQL, utilizando el mismo valor de threshold-ms. Rastrea las llamadas HTTP reales de la implementación de la comprobación de salud a los endpoints REST y GraphQL y compara la sobrecarga del middleware y de la canalización de consultas. Se considera completado cuando las comprobaciones equivalentes ya no producen resultados Unhealthy falsos únicamente debido a la superficie de la API.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp, graphql
Área
api, backend
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.