Merge branch 'master' into 3106-modal-loading-indicator
[arvados.git] / crunch_scripts / run-command
index 7a65f5377316248d35ecfbcdfd70fbd9281a3986..e6ec889bbcbdbd731b7e6930379b1957062b4178 100755 (executable)
@@ -49,7 +49,7 @@ subst.default_subs["node.cores"] = sub_cores
 rcode = 1
 
 def machine_progress(bytes_written, bytes_expected):
-    return "run-command: {} written {} total\n".format(
+    return "run-command: wrote {} total {}\n".format(
         bytes_written, -1 if (bytes_expected is None) else bytes_expected)
 
 class SigHandler(object):
@@ -86,50 +86,49 @@ try:
 
     if sig.sig != None:
         print("run-command: terminating on signal %s" % sig.sig)
-        sys.exit(rcode)
+        sys.exit(2)
     else:
         print("run-command: completed with exit code %i (%s)" % (rcode, "success" if rcode == 0 else "failed"))
 
 except Exception as e:
     print("run-command: caught exception: {}".format(e))
 
-finally:
-    # restore default signal handlers.
-    signal.signal(signal.SIGINT, signal.SIG_DFL)
-    signal.signal(signal.SIGTERM, signal.SIG_DFL)
-    signal.signal(signal.SIGQUIT, signal.SIG_DFL)
-
-    for l in links:
-        os.unlink(l)
-
-    print("run-command: the follow output files will be saved to keep:")
-
-    subprocess.call(["find", ".", "-type", "f", "-printf", "run-command: %12.12s %h/%f\\n"])
-
-    print("run-command: start writing output to keep")
-
-    done = False
-    resume_cache = put.ResumeCache(os.path.join(arvados.current_task().tmpdir, "upload-output-checkpoint"))
-    reporter = put.progress_writer(machine_progress)
-    bytes_expected = put.expected_bytes_for(".")
-    while not done:
-        try:
-            out = put.ArvPutCollectionWriter(resume_cache, reporter, bytes_expected)
-            out.do_queued_work()
-            out.write_directory_tree(".", max_manifest_depth=0)
-            outuuid = out.finish()
-            api.job_tasks().update(uuid=arvados.current_task()['uuid'],
-                                                 body={
-                                                     'output':outuuid,
-                                                     'success': (rcode == 0),
-                                                     'progress':1.0
-                                                 }).execute()
-            done = True
-        except KeyboardInterrupt:
-            print("run-command: terminating on signal SIGINT")
-            done = True
-        except Exception as e:
-            print("run-command: caught exception: {}".format(e))
-            time.sleep(5)
+# restore default signal handlers.
+signal.signal(signal.SIGINT, signal.SIG_DFL)
+signal.signal(signal.SIGTERM, signal.SIG_DFL)
+signal.signal(signal.SIGQUIT, signal.SIG_DFL)
+
+for l in links:
+    os.unlink(l)
+
+print("run-command: the follow output files will be saved to keep:")
+
+subprocess.call(["find", ".", "-type", "f", "-printf", "run-command: %12.12s %h/%f\\n"])
+
+print("run-command: start writing output to keep")
+
+done = False
+resume_cache = put.ResumeCache(os.path.join(arvados.current_task().tmpdir, "upload-output-checkpoint"))
+reporter = put.progress_writer(machine_progress)
+bytes_expected = put.expected_bytes_for(".")
+while not done:
+    try:
+        out = put.ArvPutCollectionWriter.from_cache(resume_cache, reporter, bytes_expected)
+        out.do_queued_work()
+        out.write_directory_tree(".", max_manifest_depth=0)
+        outuuid = out.finish()
+        api.job_tasks().update(uuid=arvados.current_task()['uuid'],
+                                             body={
+                                                 'output':outuuid,
+                                                 'success': (rcode == 0),
+                                                 'progress':1.0
+                                             }).execute()
+        done = True
+    except KeyboardInterrupt:
+        print("run-command: terminating on signal 2")
+        sys.exit(2)
+    except Exception as e:
+        print("run-command: caught exception: {}".format(e))
+        time.sleep(5)
 
 sys.exit(rcode)