fix: 修复 onStop 无法等待逻辑执行完成的问题

This commit is contained in:
kercylan98 2023-07-19 17:25:12 +08:00
parent 013436ab03
commit 037c9b7bbd
3 changed files with 15 additions and 6 deletions

View File

@ -45,11 +45,9 @@ func (slf *event) RegStopEvent(handle StopEventHandle) {
}
func (slf *event) OnStopEvent() {
PushSystemMessage(slf.Server, func() {
for _, handle := range slf.stopEventHandles {
handle(slf.Server)
}
})
for _, handle := range slf.stopEventHandles {
handle(slf.Server)
}
}
// RegConsoleCommandEvent 控制台收到指令时将立即执行被注册的事件处理函数

View File

@ -72,6 +72,9 @@ func (slf *MultipleServer) Run() {
signal.Notify(systemSignal, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
select {
case err := <-exceptionChannel:
for _, server := range slf.servers {
server.OnStopEvent()
}
for len(slf.servers) > 0 {
server := slf.servers[0]
server.shutdown(err)
@ -79,6 +82,9 @@ func (slf *MultipleServer) Run() {
}
break
case <-runtimeExceptionChannel:
for _, server := range slf.servers {
server.OnStopEvent()
}
for len(slf.servers) > 0 {
server := slf.servers[0]
server.multipleRuntimeErrorChan = nil
@ -87,6 +93,9 @@ func (slf *MultipleServer) Run() {
}
break
case <-systemSignal:
for _, server := range slf.servers {
server.OnStopEvent()
}
for len(slf.servers) > 0 {
server := slf.servers[0]
server.multipleRuntimeErrorChan = nil

View File

@ -392,7 +392,9 @@ func (slf *Server) Shutdown() {
// shutdown 停止运行服务器
func (slf *Server) shutdown(err error) {
slf.OnStopEvent()
if slf.multiple == nil {
slf.OnStopEvent()
}
defer func() {
if slf.multipleRuntimeErrorChan != nil {
slf.multipleRuntimeErrorChan <- err