engine: resources: exec: Clean up error handling

Some quick fixes, this whole resource should be looked at for
discrepancies, since it was written very early.
This commit is contained in:
James Shubin
2020-04-14 22:59:33 -04:00
parent 84b5b60d49
commit e9af8a2595

View File

@@ -214,19 +214,21 @@ func (obj *ExecRes) Watch() error {
exitErr, ok := err.(*exec.ExitError) // embeds an os.ProcessState exitErr, ok := err.(*exec.ExitError) // embeds an os.ProcessState
if !ok { if !ok {
// command failed in some bad way // command failed in some bad way
return errwrap.Wrapf(err, "unknown error") return errwrap.Wrapf(err, "watchcmd failed in some bad way")
} }
pStateSys := exitErr.Sys() // (*os.ProcessState) Sys pStateSys := exitErr.Sys() // (*os.ProcessState) Sys
wStatus, ok := pStateSys.(syscall.WaitStatus) wStatus, ok := pStateSys.(syscall.WaitStatus)
if !ok { if !ok {
return errwrap.Wrapf(err, "error running cmd") return errwrap.Wrapf(err, "could not get exit status of watchcmd")
} }
exitStatus := wStatus.ExitStatus() exitStatus := wStatus.ExitStatus()
obj.init.Logf("watchcmd exited with: %d", exitStatus) if exitStatus == 0 {
if exitStatus != 0 { // i'm not sure if this could happen
return errwrap.Wrapf(err, "unexpected exit status of zero") return errwrap.Wrapf(err, "unexpected watchcmd exit status of zero")
} }
return err // i'm not sure if this could happen
obj.init.Logf("watchcmd exited with: %d", exitStatus)
return errwrap.Wrapf(err, "watchcmd errored")
} }
// each time we get a line of output, we loop! // each time we get a line of output, we loop!
@@ -298,16 +300,17 @@ func (obj *ExecRes) CheckApply(apply bool) (bool, error) {
exitErr, ok := err.(*exec.ExitError) // embeds an os.ProcessState exitErr, ok := err.(*exec.ExitError) // embeds an os.ProcessState
if !ok { if !ok {
// command failed in some bad way // command failed in some bad way
return false, err return false, errwrap.Wrapf(err, "ifcmd failed in some bad way")
} }
pStateSys := exitErr.Sys() // (*os.ProcessState) Sys pStateSys := exitErr.Sys() // (*os.ProcessState) Sys
wStatus, ok := pStateSys.(syscall.WaitStatus) wStatus, ok := pStateSys.(syscall.WaitStatus)
if !ok { if !ok {
return false, errwrap.Wrapf(err, "error running cmd") return false, errwrap.Wrapf(err, "could not get exit status of ifcmd")
} }
exitStatus := wStatus.ExitStatus() exitStatus := wStatus.ExitStatus()
if exitStatus == 0 { if exitStatus == 0 {
return false, fmt.Errorf("unexpected exit status of zero") // i'm not sure if this could happen
return false, errwrap.Wrapf(err, "unexpected ifcmd exit status of zero")
} }
obj.init.Logf("ifcmd exited with: %d", exitStatus) obj.init.Logf("ifcmd exited with: %d", exitStatus)
@@ -438,7 +441,7 @@ func (obj *ExecRes) CheckApply(apply bool) (bool, error) {
return false, errwrap.Wrapf(err, "cmd timeout, exit status: %d", exitStatus) return false, errwrap.Wrapf(err, "cmd timeout, exit status: %d", exitStatus)
} }
return false, fmt.Errorf("unknown cmd error, signal: %s, exit status: %d", sig, exitStatus) return false, errwrap.Wrapf(err, "unknown cmd error, signal: %s, exit status: %d", sig, exitStatus)
} else if err != nil { } else if err != nil {
return false, errwrap.Wrapf(err, "general cmd error") return false, errwrap.Wrapf(err, "general cmd error")