projects
/
arvados.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8ee2c7c
)
10701: Tidy up error handling.
author
Tom Clegg <tom@curoverse.com>
Thu, 9 Feb 2017 17:24:20 +0000
(12:24 -0500)
committer
Tom Clegg <tom@curoverse.com>
Thu, 9 Feb 2017 17:24:20 +0000
(12:24 -0500)
services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
patch
|
blob
|
history
diff --git
a/services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
b/services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
index fe559f1c64775ca811a0680acc75caf0f7a6504f..476ca1f4a117cd5021460a5c8c63ef6b5d198d80 100644
(file)
--- a/
services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
+++ b/
services/crunch-dispatch-slurm/crunch-dispatch-slurm.go
@@
-151,18
+151,7
@@
var sbatchCmd = sbatchFunc
var scancelCmd = scancelFunc
// Submit job to slurm using sbatch.
var scancelCmd = scancelFunc
// Submit job to slurm using sbatch.
-func submit(dispatcher *dispatch.Dispatcher,
- container arvados.Container, crunchRunCommand []string) (submitErr error) {
- defer func() {
- // If we didn't get as far as submitting a slurm job,
- // unlock the container and return it to the queue.
- if submitErr == nil {
- // OK, no cleanup needed
- return
- }
- dispatcher.Unlock(container.UUID)
- }()
-
+func submit(dispatcher *dispatch.Dispatcher, container arvados.Container, crunchRunCommand []string) error {
cmd := sbatchCmd(container)
// Send a tiny script on stdin to execute the crunch-run
cmd := sbatchCmd(container)
// Send a tiny script on stdin to execute the crunch-run
@@
-179,13
+168,18
@@
func submit(dispatcher *dispatch.Dispatcher,
log.Printf("exec sbatch %+q", cmd.Args)
err := cmd.Run()
log.Printf("exec sbatch %+q", cmd.Args)
err := cmd.Run()
+
switch err.(type) {
case nil:
log.Printf("sbatch succeeded: %q", strings.TrimSpace(stdout.String()))
return nil
switch err.(type) {
case nil:
log.Printf("sbatch succeeded: %q", strings.TrimSpace(stdout.String()))
return nil
+
case *exec.ExitError:
case *exec.ExitError:
+ dispatcher.Unlock(container.UUID)
return fmt.Errorf("sbatch %+q failed: %v (stderr: %q)", cmd.Args, err, stderr.Bytes())
return fmt.Errorf("sbatch %+q failed: %v (stderr: %q)", cmd.Args, err, stderr.Bytes())
+
default:
default:
+ dispatcher.Unlock(container.UUID)
return fmt.Errorf("exec failed: %v", err)
}
}
return fmt.Errorf("exec failed: %v", err)
}
}