项目文件夹

文件
jejefferson 49070afa8c server/grpc: improve graceful stop behavior (#2892)
* server/grpc: improve graceful stop behavior

* server/grpc: add graceful stop example and test

* examples/graceful-stop: document verification steps
2026-04-10 08:10:10 +01:00

1000 B

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