PickFirstLeafLoadBalancer may get stuck in Idle on backend address change
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- java
- Ambito
- backend-api-design
Direzione di ricerca
Inizia da core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java, concentrandoti sull’aggiornamento del resolver, sulla rimozione dei subchannel, sullo stato del channel, sull’Idle picker e sui percorsi ExitIdle collegati nel report. Riproduci o ricostruisci la sequenza di eventi dalla correzione di grpc-go indicata e analizza i test esistenti di PickFirstLeafLoadBalancer, se disponibili. Il lavoro è completo quando una modifica dell’indirizzo del backend non può lasciare il balancer in IDLE senza riconnettersi ai nuovi endpoint.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
A bug was found in the new pickfirst balancer in gRPC Go which can cause the balancer to get stuck in IDLE state: https://github.com/grpc/grpc-go/pull/8615.
The implementation of the pickfirst LB in Java is similar, so it may suffer from the same issue. The order of events that lead to the bug is as follows:
- Existing connection breaks, the balancer requests re-resolution and reports IDLE. PF updates the channel state to IDLE with an
Idle picker. - An RPC is made, triggering the balancer to exit idle through the picker. The balancer attempts to re-connect the failed subchannel.
- The resolver produces a new endpoint list, removing the endpoint used by the existing subchannel. PF removes the existing subchannel. Since the balancer didn't update the channel state to CONNECTING yet, pickfirst thinks that it's still in IDLE and doesn't start connecting to the new endpoints.
- New RPC requests trigger the idle picker, but it's a no-op since it only triggers the balancer's ExitIdle method once.
- Lingua principale
- Java
- Stelle
- 12.1k
- Fork
- 4k
- Merge medio
- 2g 1h
- PR unite (30g)
- 31
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di grpc/grpc-java
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
grpc/grpc-java#13063 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
grpc/grpc-java#13052 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Support of `dns:name` URIsApertadocs enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
grpc/grpc-java#10824 · 8 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 70/100
grpc/grpc-java#13078 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
grpc/grpc-java#13075 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di grpc/grpc-java
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
redhat-developer/intellij-quarkus#1626 ·
-
Type/Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
wso2/product-integrator-mi#5061 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
quarkiverse/quarkus-roq#1277 ·
I maintainer di solito rispondono entro 1 giorno
-
Typos in page footerAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
apache/logging-site#48 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/maven-surefire#3496 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno