Open bourne-3 opened 1 year ago
Update:
func (t *St) SH() {
.... (some code)
c := make(chan os.Signal, len(sigs))
signal.Notify(c, sigs...)
for {
select {
case sig := <-c:
t.handle(sig)
case <-t.ch:
return
}
}
}
I found this function above in the code When I commented out this function, it closed properly ... Why this happen..?
Also, I did an experiment and without any wrapping, with the default gin framework, when I call
kill -SIGUSR2 ${master_pid}
I get an error as follows
accept tcp [::]:5001: use of closed network connection
Is this error normal and do I need to deal with it?
======
Does this error report have the same effect as the http.ErrServerClosed
?
// ErrServerClosed is returned by the Server's Serve, ServeTLS, ListenAndServe,
// and ListenAndServeTLS methods after a call to Shutdown or Close.
var ErrServerClosed = errors.New("http: Server closed")
Context: I am using the Gin framework and have made some customizations to the framework. Here are some of the encapsulated structures.
After completing all the initialization, the service is started using the following code:
When using "overseer," I assign state.Listener to ss.Ln and then call ss.Engine.RunListener(ss.Ln) to start the service.
Problem: Currently, graceful restart is working fine. However, when I send a TERM signal to the program for a normal shutdown, it gets blocked and doesn't terminate.
How can I resolve the above issues?