fix: 修复 server 包连接断开消息分发器阻塞的问题,优化等待消息时打印的日志频率
This commit is contained in:
parent
6f7868483f
commit
af237448d7
|
@ -116,7 +116,7 @@ func (d *Dispatcher[P, M]) Expel() {
|
||||||
func (d *Dispatcher[P, M]) noLockExpel() {
|
func (d *Dispatcher[P, M]) noLockExpel() {
|
||||||
d.expel = true
|
d.expel = true
|
||||||
if d.mc <= 0 {
|
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.mc += i
|
||||||
d.pmc[producer] += i
|
d.pmc[producer] += i
|
||||||
if d.expel && d.mc <= 0 {
|
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 {
|
if ch := d.closedHandler.Load(); ch != nil {
|
||||||
(*ch)(&Action[P, M]{d: d, unlock: true})
|
(*ch)(&Action[P, M]{d: d, unlock: true})
|
||||||
}
|
}
|
||||||
close(d.abort)
|
|
||||||
}(d)
|
}(d)
|
||||||
return d
|
return d
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,11 +191,20 @@ func (srv *Server) shutdown(err error) {
|
||||||
log.Error("Server", log.String("state", "shutdown"), log.Err(err))
|
log.Error("Server", log.String("state", "shutdown"), log.Err(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var infoCount int
|
||||||
for srv.messageCounter.Load() > 0 {
|
for srv.messageCounter.Load() > 0 {
|
||||||
log.Info("Server", log.Any("network", srv.network), log.String("listen", srv.addr),
|
if infoCount%10 == 0 {
|
||||||
log.String("action", "shutdown"), log.String("state", "waiting"), log.Int64("message", srv.messageCounter.Load()))
|
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)
|
time.Sleep(time.Second)
|
||||||
|
infoCount++
|
||||||
}
|
}
|
||||||
|
srv.dispatcherMgr.Wait()
|
||||||
if srv.multiple == nil {
|
if srv.multiple == nil {
|
||||||
srv.OnStopEvent()
|
srv.OnStopEvent()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue