logger.error(pprint.pformat(taskp))
sys.exit(1)
+# rcode holds the return codes produced by each subprocess
+rcode = {}
try:
subprocesses = []
close_streams = []
active = 1
pids = set([s.pid for s in subprocesses])
- rcode = {}
while len(pids) > 0:
(pid, status) = os.wait()
pids.discard(pid)
else:
outcollection = robust_put.upload(outdir, logger)
-# Success if no non-zero return codes
-success = not any([status != 0 for status in rcode.values()])
+# Success if we ran any subprocess, and they all exited 0.
+success = rcode and all(status == 0 for status in rcode.itervalues())
api.job_tasks().update(uuid=arvados.current_task()['uuid'],
body={
'progress':1.0
}).execute()
-sys.exit(rcode)
+sys.exit(0 if success else 1)