Files
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 12:40:33 +08: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