mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
integration: gracefully shut down gRPC server (#11437)
This commit is contained in:
parent
b7d9f45a43
commit
d70251835d
@ -1019,11 +1019,25 @@ func (m *member) Close() {
|
||||
m.serverClient = nil
|
||||
}
|
||||
if m.grpcServer != nil {
|
||||
m.grpcServer.Stop()
|
||||
m.grpcServer.GracefulStop()
|
||||
ch := make(chan struct{})
|
||||
go func() {
|
||||
defer close(ch)
|
||||
// close listeners to stop accepting new connections,
|
||||
// will block on any existing transports
|
||||
m.grpcServer.GracefulStop()
|
||||
}()
|
||||
// wait until all pending RPCs are finished
|
||||
select {
|
||||
case <-ch:
|
||||
case <-time.After(2 * time.Second):
|
||||
// took too long, manually close open transports
|
||||
// e.g. watch streams
|
||||
m.grpcServer.Stop()
|
||||
<-ch
|
||||
}
|
||||
m.grpcServer = nil
|
||||
m.grpcServerPeer.Stop()
|
||||
m.grpcServerPeer.GracefulStop()
|
||||
m.grpcServerPeer.Stop()
|
||||
m.grpcServerPeer = nil
|
||||
}
|
||||
m.s.HardStop()
|
||||
|
Loading…
x
Reference in New Issue
Block a user