`Change graceful_shutdown function behavior` PR can cause tonic servers to hang `serve_with_incoming_shutdown` in two different cases
@seanmonstar ci sta già lavorando.
Dal 27/8/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Version
Foudn in hyper 1.5.1 and later
Platform
25.5.0 (macOS), though it is also applying on our linux bots
Summary
At OneSignal we have a number of tonic gRPC services we maintain. After a recent update of dependencies on one of them, we noticed that it "randomly" would hang during shutdown for an hour or more.
After a week of chasing the wild goose, we have isolated it to a single PR introduced in hyper 1.5.1:
https://github.com/hyperium/hyper/pull/3729
In these cases a tonic server:
Server::builder()
.add_service(GreeterServer::new(MyGreeter::default()))
.serve_with_incoming_shutdown(incoming, async move {
shutdown_grpc_token.cancelled().await
})
.await
.unwrap();
would never return and block for an hour or more after the shutdown_grpc_token CancellationToken was canceled.
We have a primary example non_upgrade_connections_can_block_shutdown and a secondary one we found along the way client_not_responding_example in this self contained example:
https://github.com/chamons/hyper_hung_client_example
With a patch.crates-io line, we can resolve this branch with the PR reverted and both of these example begin acting as expected.
Expected Behavior
It is not expected that passive tonic gRPC connections to a server that are unused would block shutdown. Before 1.5.1 they did not.
Actual Behavior
We block until the upstream instance restarts or otherwise drops all of its connections.
Additional Context
No response
- Lingua principale
- Rust
- Stelle
- 16.3k
- Fork
- 1.8k
- Merge medio
- 1g 23h
- PR unite (30g)
- 13
Guida per i contributori
Apri la guida per i contributori
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 hyperium/hyper
-
C-feature
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
-
C-feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
C-bug S-waiting-on-author
-
C-bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
A-client C-bug E-pr-welcome K-hyper-util
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
Tutte le issue di hyperium/hyper
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
TheLarkInn/aipm#2413 ·
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
alexgorbatchev/simple-ptt#15 ·
-
tooling
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
todo:ticket
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
taikoxyz/taiko-mono#22168 · 1 commento ·