32 lines
878 B
Go
32 lines
878 B
Go
package runtime
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.sendico.io/tech/sxchnge/product/app/health/status"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func (a *APIImp) Finish(ctx context.Context) error {
|
|
a.health.SetStatus(health.SSTerminating)
|
|
a.health.Finish()
|
|
a.mw.Finish()
|
|
var lastError error
|
|
for i := len(a.services) - 1; i >= 0; i-- {
|
|
if err := (a.services[i]).Finish(ctx); err != nil {
|
|
lastError = err
|
|
a.logger.Warn("Error occurred when finishing service",
|
|
zap.Error(err), zap.String("service_name", (a.services[i]).Name()))
|
|
} else {
|
|
a.logger.Info("Microservice is down", zap.String("service_name", (a.services[i]).Name()))
|
|
}
|
|
}
|
|
if a.runtime.Finish != nil {
|
|
if err := a.runtime.Finish(a); err != nil {
|
|
lastError = err
|
|
a.logger.Warn("Error occurred when finishing runtime profile", zap.String("runtime", a.runtime.RuntimeName()), zap.Error(err))
|
|
}
|
|
}
|
|
return lastError
|
|
}
|