fix: 修复 onStop 无法等待逻辑执行完成的问题
This commit is contained in:
parent
013436ab03
commit
037c9b7bbd
|
@ -45,11 +45,9 @@ func (slf *event) RegStopEvent(handle StopEventHandle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (slf *event) OnStopEvent() {
|
func (slf *event) OnStopEvent() {
|
||||||
PushSystemMessage(slf.Server, func() {
|
|
||||||
for _, handle := range slf.stopEventHandles {
|
for _, handle := range slf.stopEventHandles {
|
||||||
handle(slf.Server)
|
handle(slf.Server)
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegConsoleCommandEvent 控制台收到指令时将立即执行被注册的事件处理函数
|
// RegConsoleCommandEvent 控制台收到指令时将立即执行被注册的事件处理函数
|
||||||
|
|
|
@ -72,6 +72,9 @@ func (slf *MultipleServer) Run() {
|
||||||
signal.Notify(systemSignal, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
|
signal.Notify(systemSignal, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
|
||||||
select {
|
select {
|
||||||
case err := <-exceptionChannel:
|
case err := <-exceptionChannel:
|
||||||
|
for _, server := range slf.servers {
|
||||||
|
server.OnStopEvent()
|
||||||
|
}
|
||||||
for len(slf.servers) > 0 {
|
for len(slf.servers) > 0 {
|
||||||
server := slf.servers[0]
|
server := slf.servers[0]
|
||||||
server.shutdown(err)
|
server.shutdown(err)
|
||||||
|
@ -79,6 +82,9 @@ func (slf *MultipleServer) Run() {
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case <-runtimeExceptionChannel:
|
case <-runtimeExceptionChannel:
|
||||||
|
for _, server := range slf.servers {
|
||||||
|
server.OnStopEvent()
|
||||||
|
}
|
||||||
for len(slf.servers) > 0 {
|
for len(slf.servers) > 0 {
|
||||||
server := slf.servers[0]
|
server := slf.servers[0]
|
||||||
server.multipleRuntimeErrorChan = nil
|
server.multipleRuntimeErrorChan = nil
|
||||||
|
@ -87,6 +93,9 @@ func (slf *MultipleServer) Run() {
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case <-systemSignal:
|
case <-systemSignal:
|
||||||
|
for _, server := range slf.servers {
|
||||||
|
server.OnStopEvent()
|
||||||
|
}
|
||||||
for len(slf.servers) > 0 {
|
for len(slf.servers) > 0 {
|
||||||
server := slf.servers[0]
|
server := slf.servers[0]
|
||||||
server.multipleRuntimeErrorChan = nil
|
server.multipleRuntimeErrorChan = nil
|
||||||
|
|
|
@ -392,7 +392,9 @@ func (slf *Server) Shutdown() {
|
||||||
|
|
||||||
// shutdown 停止运行服务器
|
// shutdown 停止运行服务器
|
||||||
func (slf *Server) shutdown(err error) {
|
func (slf *Server) shutdown(err error) {
|
||||||
|
if slf.multiple == nil {
|
||||||
slf.OnStopEvent()
|
slf.OnStopEvent()
|
||||||
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
if slf.multipleRuntimeErrorChan != nil {
|
if slf.multipleRuntimeErrorChan != nil {
|
||||||
slf.multipleRuntimeErrorChan <- err
|
slf.multipleRuntimeErrorChan <- err
|
||||||
|
|
Loading…
Reference in New Issue