package runtime import ( "context" "git.sendico.io/tech/sxchnge/bff/pkg/api/routers/health" "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 }