mirror of
https://github.com/zhufuyi/sponge.git
synced 2025-09-27 04:55:57 +08:00
45 lines
876 B
Go
45 lines
876 B
Go
package initial
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/zhufuyi/sponge/internal/config"
|
|
"github.com/zhufuyi/sponge/internal/model"
|
|
|
|
"github.com/zhufuyi/sponge/pkg/app"
|
|
"github.com/zhufuyi/sponge/pkg/tracer"
|
|
)
|
|
|
|
// Close releasing resources after service exit
|
|
func Close(servers []app.IServer) []app.Close {
|
|
var closes []app.Close
|
|
|
|
// close server
|
|
for _, s := range servers {
|
|
closes = append(closes, s.Stop)
|
|
}
|
|
|
|
// close database
|
|
closes = append(closes, func() error {
|
|
return model.CloseDB()
|
|
})
|
|
|
|
// close redis
|
|
if config.Get().App.CacheType == "redis" {
|
|
closes = append(closes, func() error {
|
|
return model.CloseRedis()
|
|
})
|
|
}
|
|
|
|
// close tracing
|
|
if config.Get().App.EnableTrace {
|
|
closes = append(closes, func() error {
|
|
ctx, _ := context.WithTimeout(context.Background(), 2*time.Second) //nolint
|
|
return tracer.Close(ctx)
|
|
})
|
|
}
|
|
|
|
return closes
|
|
}
|