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

Offen Anfängerfreundlich
#13,165 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
1/5
Geschätzter Aufwand
Unter einer Stunde
Anfängerfreundlichkeit
88/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
java

Rechercherichtung

Lies xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java im Bereich der Behandlung des Fehlerprozentsatzes und vergleiche dann das Verhalten bei nicht gesetztem Wert mit der Behandlung der Erfolgsrate darüber sowie der in der Issue verlinkten A50-Spezifikation. Aktualisiere den Standardwert des Fehlerprozentsatzes so, dass er der Spezifikation entspricht, und überprüfe, dass ein nicht gesetzter Wert die Aussonderung anhand des Fehlerprozentsatzes deaktiviert, während explizite Werte ihr bisheriges Verhalten beibehalten.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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 {
  // ...
Vorherrschende Sprache
Java
Sterne
12.1k
Forks
4k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
43

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus grpc/grpc-java

Alle Issues in grpc/grpc-java

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.