From af237448d7b7019adcb5bfc8d6efa135f597c372 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Fri, 12 Jan 2024 17:04:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20server=20=E5=8C=85?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E6=96=AD=E5=BC=80=E6=B6=88=E6=81=AF=E5=88=86?= =?UTF-8?q?=E5=8F=91=E5=99=A8=E9=98=BB=E5=A1=9E=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E7=AD=89=E5=BE=85=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=97=B6=E6=89=93=E5=8D=B0=E7=9A=84=E6=97=A5=E5=BF=97=E9=A2=91?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/internal/dispatcher/dispatcher.go | 5 ++--- server/server.go | 13 +++++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/server/internal/dispatcher/dispatcher.go b/server/internal/dispatcher/dispatcher.go index c859c13..985e28b 100644 --- a/server/internal/dispatcher/dispatcher.go +++ b/server/internal/dispatcher/dispatcher.go @@ -116,7 +116,7 @@ func (d *Dispatcher[P, M]) Expel() { func (d *Dispatcher[P, M]) noLockExpel() { d.expel = true if d.mc <= 0 { - d.abort <- struct{}{} + close(d.abort) } } @@ -139,7 +139,7 @@ func (d *Dispatcher[P, M]) IncrCount(producer P, i int64) { d.mc += i d.pmc[producer] += i if d.expel && d.mc <= 0 { - d.abort <- struct{}{} + close(d.abort) } } @@ -190,7 +190,6 @@ func (d *Dispatcher[P, M]) Start() *Dispatcher[P, M] { if ch := d.closedHandler.Load(); ch != nil { (*ch)(&Action[P, M]{d: d, unlock: true}) } - close(d.abort) }(d) return d } diff --git a/server/server.go b/server/server.go index e03d445..7d7871d 100644 --- a/server/server.go +++ b/server/server.go @@ -191,11 +191,20 @@ func (srv *Server) shutdown(err error) { log.Error("Server", log.String("state", "shutdown"), log.Err(err)) } + var infoCount int for srv.messageCounter.Load() > 0 { - log.Info("Server", log.Any("network", srv.network), log.String("listen", srv.addr), - log.String("action", "shutdown"), log.String("state", "waiting"), log.Int64("message", srv.messageCounter.Load())) + if infoCount%10 == 0 { + log.Info("Server", + log.Any("network", srv.network), + log.String("listen", srv.addr), + log.String("action", "shutdown"), + log.String("state", "waiting"), + log.Int64("message", srv.messageCounter.Load())) + } time.Sleep(time.Second) + infoCount++ } + srv.dispatcherMgr.Wait() if srv.multiple == nil { srv.OnStopEvent() }