Outlier detection: unset `failure_percent_ejection` results in 100% instead of 0%

Ouverte Adaptée aux débutants
#13,165 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@ahmadmaaz y travaille déjà.

Depuis le 6/11/2026.

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
88/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
java

Piste de recherche

Lisez xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java autour de la gestion du pourcentage d’échecs, puis comparez le comportement en l’absence de valeur avec celui de la gestion du taux de réussite qui précède et avec la spécification A50 liée dans l’issue. Mettez à jour la valeur par défaut du pourcentage d’échecs pour qu’elle corresponde à la spécification, et vérifiez qu’une valeur non définie désactive l’éviction selon le pourcentage d’échecs, tandis que les valeurs explicites conservent leur comportement.

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

Description

success_rate_ejection.enforcement_percentage defaults to 100% per Envoy and our spec:

https://github.com/grpc/proposal/blob/4125fbd155353d35386d8fbd6b23454f6ab0e345/A50-xds-outlier-detection.md?plain=1#L72-L75

This is implemented (correctly) here:

https://github.com/grpc/grpc-java/blob/ed3bf6b76b65fc76c1669ef70b71765844eb8a50/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java#L379-L396

But failure_percent_ejection should default to zero instead (i.e. disable checking when unset):

https://github.com/grpc/proposal/blob/4125fbd155353d35386d8fbd6b23454f6ab0e345/A50-xds-outlier-detection.md?plain=1#L148

This is implemented (incorrectly) here:

https://github.com/grpc/grpc-java/blob/ed3bf6b76b65fc76c1669ef70b71765844eb8a50/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java#L398-L414

Note that it's a copy/paste of the enforcement_percentage above it, meaning it is only disabled if it is explicitly set to zero.

When we go to actually build the enforcer, failurePercentage is non-null:

https://github.com/grpc/grpc-java/blob/ed3bf6b76b65fc76c1669ef70b71765844eb8a50/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java#L632-L652

But enforcement percentage is null, so the default percentage of 100 is applied:

https://github.com/grpc/grpc-java/blob/ed3bf6b76b65fc76c1669ef70b71765844eb8a50/util/src/main/java/io/grpc/util/OutlierDetectionLoadBalancer.java#L1116-L1121

The fix appears to be trivial. In EnvoyServerProtoData.java, change the check to:

if (!envoyOutlierDetection.hasEnforcingFailurePercentage()
    || envoyOutlierDetection.getEnforcingFailurePercentage().getValue() == 0) {
  failurePercentageEjection = null;
} else {
  // ...
Langage dominant
Java
Étoiles
12.1k
Forks
4k
Merge moyen
2 j 3 h
PR mergées (30 j)
41

Préparer son environnement

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.

Autres issues de grpc/grpc-java

Toutes les issues de grpc/grpc-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

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