Context: I am using the Gin framework and have made some customizations to the framework. Here are some of the encapsulated structures.
type sm struct {
*gin.Engine
Server *http.Server
RouterFunc func(*gin.Engine)
Config WbConf
Ln net.Listener
}
After completing all the initialization, the service is started using the following code:
func (ss *simpleServer) ListenAndServe() {
if ss.Ln != nil {
if err := ss.Engine.RunListener(ss.Ln); err != nil {
fmt.Println("current listen err:", err)
if !strings.Contains(err.Error(), "use of closed network connection") {
logrus.WithError(err).Panic("InitServerStart() Mainserver ListenAndServe failed")
}
}
return
}
ss.Server.Handler = ss.Engine
if err := ss.Server.ListenAndServe(); err != nil {
fmt.Println("current listen err:", err)
if err != http.ErrServerClosed {
logrus.WithError(err).Panic("InitServerStart() Mainserver ListenAndServe failed")
}
}
}
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?
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?