googleapis / googleapis/google-cloud-java
Update Jitter in Exponential Retry Strategy
- Vorherrschende Sprache
- Java
- Sterne
- 2.1k
- Forks
- 1.2k
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 157
Beschreibung
**Is your feature request related to a problem? Please describe.**
In Exponential Retry Strategy, Jitter is used to prevent from several clients retrying at the same time.
However, the [existing jitter](http://googleapis.github.io/gax-java/1.8.0/apidocs/com/google/api/gax/retrying/RetrySettings.Builder.html#setJittered-boolean-) value is generated per:
```
actualDelay = rand_between(0, min(maxRetryDelay, exponentialDelay))
```
The issue with the delay is with pathological case of a short delay, e.g. 1 second.
**Describe the solution you'd like**
It would help to update jitter delay to be either one of the following:
1. `actualDelay = exponentialDelay + rand_milliseconds()`
2. `actualDelay = rand_between(exponentialDelay - E, exponentialDelay + E)` where E is constant value used to create a range with respect to exponentialDelay.
**Describe alternatives you've considered**
Turning off jitter which defeats the purpose of having jitter.
First came up in: https://github.com/googleapis/java-storage/issues/178
Beitragsleitfaden
Rechercherichtung
Beginne damit, die exponentielle Retry-Strategie und ihre RetrySettings.Builder-Konfiguration in der Java-Clientbibliothek zu lokalisieren. Vergleiche die bestehende Jitter-Berechnung mit den beiden im Issue beschriebenen Alternativen und sieh dir googleapis/java-storage#178 als Kontext an. Die Aufgabe ist abgeschlossen, wenn ein abgestimmtes Jitter-Verhalten implementiert und durch Tests für kurze Verzögerungen abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- api
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100