Back to Go Micro

Graceful Stop Demo

examples/graceful-stop/README.md

5.20.0999 B
Original Source

Graceful Stop Demo

This example demonstrates the intended shutdown behavior after the gRPC graceful-stop patch.

Run

bash
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:

text
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

bash
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