Skip to content

Commit

Permalink
feat: server.Server 在执行 Shutdown 时将会等待所有消息分发器被释放
Browse files Browse the repository at this point in the history
  • Loading branch information
kercylan98 committed Jan 12, 2024
1 parent e760ef2 commit 4f2850b
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ func (srv *Server) shutdown(err error) {

var infoCount int
for srv.messageCounter.Load() > 0 {
if infoCount%10 == 0 {
if infoCount%10 == 0 || infoCount == 0 {
log.Info("Server",
log.Any("network", srv.network),
log.String("listen", srv.addr),
Expand All @@ -202,7 +202,28 @@ func (srv *Server) shutdown(err error) {
time.Sleep(time.Second)
infoCount++
}
dispatcherMgrStopSignal := make(chan struct{})
go func(srv *Server, c <-chan struct{}) {
var infoCount int
for {
select {
case <-c:
return
case <-time.After(time.Second):
if infoCount%10 == 0 || infoCount == 0 {
log.Info("Server",
log.Any("network", srv.network),
log.String("listen", srv.addr),
log.String("action", "shutdown"),
log.String("state", "waiting"),
log.Int64("dispatcher", srv.dispatcherMgr.GetDispatcherNum()))
}
infoCount++
}
}
}(srv, dispatcherMgrStopSignal)
srv.dispatcherMgr.Wait()
close(dispatcherMgrStopSignal)
if srv.multiple == nil {
srv.OnStopEvent()
}
Expand Down

0 comments on commit 4f2850b

Please sign in to comment.