e071084ebe
govulncheck / govulncheck (push) Waiting to run
Harness (E2E) / Harnesses (mock LLM) (push) Waiting to run
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Run Tests / Unit Tests (push) Waiting to run
Run Tests / Etcd Integration Tests (push) Waiting to run
Graceful Stop Demo
This example demonstrates the intended shutdown behavior after the gRPC graceful-stop patch.
Run
go run ./examples/graceful-stop
Expected behavior
- one long-running RPC starts
- shutdown begins while that RPC is still running
- new RPCs stop being accepted shortly after shutdown starts
- the in-flight RPC is allowed to finish
Typical output:
long RPC is running; starting shutdown
new RPC rejected after shutdown began: ...
long RPC completed: slept for 1500ms
done
There may be a small race window where the first post-stop RPC is still accepted once before subsequent new RPCs are rejected. The important part is that in-flight RPCs are drained while new RPCs are cut off.
Automated check
go test ./server/grpc -run TestGracefulStopRejectsNewRPCsButAllowsInFlightRPCs -v
Environment
- no special environment variables are required
- the demo may print a TLS warning from
go-micro; it is unrelated to this change