diff --git a/internal/hanabackup/hanabackup.go b/internal/hanabackup/hanabackup.go index e5f30bca..9a7386df 100644 --- a/internal/hanabackup/hanabackup.go +++ b/internal/hanabackup/hanabackup.go @@ -282,6 +282,21 @@ func StopHANA(ctx context.Context, force bool, user, sid string, exec commandlin Timeout: 300, }) if result.Error != nil || result.StdErr != "" { + log.CtxLogger(ctx).Errorw("Failure stopping HANA", "stdout", result.StdOut, "stderr", result.StdErr, "error", result.Error) + if strings.Contains(result.StdErr, "No such process") { + cmd = fmt.Sprintf("-c 'ps -U %s -o comm | grep -E \"hdbdaemon|hdb.sap\" | grep -v defunct'", sid) + checkResult := exec(ctx, commandlineexecutor.Params{ + User: user, + Executable: "bash", + ArgsToSplit: cmd, + Timeout: 300, + }) + if !(len(checkResult.StdOut) > 0 || checkResult.ExitCode == 0) { + log.CtxLogger(ctx).Infow("HANA stopped successfully", "sid", sid) + return nil + } + } + return fmt.Errorf("failure stopping HANA, stderr: %s, err: %s", result.StdErr, result.Error) } log.CtxLogger(ctx).Debugw("StopHANA", "stdout", result.StdOut, "stderr", result.StdErr)