7824: Use logging facility to show error messages.
[arvados.git] / services / api / lib / crunch_dispatch.rb
index a66b4a02c2be470d87808600f14a8eed08b5c95c..bea1657de22b72c0d5296a4c571afcee3ffc0993 100644 (file)
@@ -963,11 +963,11 @@ class CrunchDispatch
   # An array of job_uuids in squeue
   def squeue_jobs
     if Rails.configuration.crunch_job_wrapper == :slurm_immediate
-      p = File.popen(['squeue', '-a', '-h', '-o', '%j'])
-      # Avoid zombie processes stack up
-      Process.detach(p.pid)
-      p.readlines.map do |line|
-        line.strip
+      p = IO.popen(['squeue', '-a', '-h', '-o', '%j'])
+      begin
+        p.readlines.map {|line| line.strip}
+      ensure
+        p.close
       end
     else
       []
@@ -976,10 +976,9 @@ class CrunchDispatch
 
   def scancel slurm_name
     cmd = sudo_preface + ['scancel', '-n', slurm_name]
-    p = File.popen(cmd)
-    # Avoid zombie processes stack up
-    Process.detach(p.pid)
-    puts p.read
+    IO.popen(cmd) do |scancel_pipe|
+      puts scancel_pipe.read
+    end
     if not $?.success?
       Rails.logger.error "scancel #{slurm_name.shellescape}: $?"
     end