Azure / Azure/data-api-builder

[Bug]: Critical! Health check response-ms includes full HTTP roundtrip, not just query time

Ouverte
#3,568 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

2.x health-endpoint
Langage dominant
C#
Étoiles
1.5k
Forks
372
Merge moyen
3 j 22 h
PR mergées (30 j)
9

Description

The `response-ms` value in health check results measures the full self-HTTP-call duration (HTTP client → middleware → auth → routing → controller → DB → response), not just the database query execution time.

## Expected

`response-ms` should ideally represent the actual database query or endpoint processing time, making it useful for monitoring database health.

## Actual

The health check implementation (`HealthCheckHelper`) makes real HTTP calls to `GET /api/{entity}?$first=N` and `POST /graphql`. The `response-ms` measures the complete round-trip through:

1. HTTP client overhead
2. Kestrel request processing
3. Authentication middleware
4. Routing middleware
5. Controller action
6. SQL query execution
7. JSON serialization
8. Response delivery

Evidence from DAB logs:
```
Start processing HTTP request GET http://localhost:5000/api/Todo?$first=50
Sending HTTP request GET http://localhost:5000/api/Todo?$first=50
...
Received HTTP response headers after 155.4462ms - 200
```

A simple `SELECT TOP 51` query takes <5ms in the database, but the health check reports 155ms+ because it includes the full middleware pipeline. On cold starts (first health check after startup), this can be 500-700ms+.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par localiser HealthCheckHelper et suivre la manière dont il mesure le temps des appels GET /api/{entity}?$first=N et POST /graphql. Comparez la valeur response-ms rapportée avec le temps de traitement de la base de données ou de l’endpoint ; le travail est terminé lorsque la métrique exclut l’aller-retour HTTP et middleware complet et est couverte par des tests appropriés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
csharp, graphql, sql
Domaine
api, databases, observability
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
À clarifier
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.