improved error reporting for failed system calls
authorChristoph Helma <helma@in-silico.ch>
Thu, 22 Mar 2012 11:55:18 +0000 (12:55 +0100)
committerChristoph Helma <helma@in-silico.ch>
Thu, 22 Mar 2012 11:55:18 +0000 (12:55 +0100)
lib/overwrite.rb
lib/task.rb

index d99e5a2..4ba6811 100644 (file)
@@ -68,17 +68,11 @@ module Kernel
       stdout = stdout_stream.read
       stderr = stderr_stream.read
     end
-    internal_server_error stdout + stderr if !status.success?
+    internal_server_error "`" + cmd + "` failed.\n" + stdout + stderr if !status.success?
     return stdout
   rescue
     internal_server_error $!.message
   end
 
-  alias_method :system!, :system
-
-  def system cmd
-    `#{cmd}`
-    return true
-  end
 end
 
index f19a918..6923e28 100644 (file)
@@ -8,14 +8,12 @@ module OpenTox
 
     def self.create service_uri, params={}
 
-      # TODO: run observer in same process?
       task = Task.new RestClientWrapper.post(service_uri,params).chomp
       pid = fork do
         begin
           result_uri = yield 
           task.completed result_uri
         rescue 
-          puts $!.report.to_yaml
           RestClientWrapper.put(File.join(task.uri,'Error'),{:errorReport => $!.report.to_yaml}) if $!.respond_to? :report
           task.kill
         end
@@ -80,7 +78,7 @@ module OpenTox
 
   end
 
-  # get only header for ststus requests
+  # get only header for status requests
   def running?
     RestClientWrapper.head(@uri).code == 202 
   end
@@ -98,6 +96,11 @@ module OpenTox
     code >= 400 and code != 503
   end
 
+  def errorReport
+    # TODO: fix rdf output at task service
+    not_implemented_error "RDF output of errorReports has to be fixed at task service"
+  end
+
   [:hasStatus, :resultURI].each do |method|
     define_method method do
       response = self.[](RDF::OT[method])
@@ -106,6 +109,6 @@ module OpenTox
     end
   end
 
-  #TODO: subtasks
+  #TODO: subtasks (only for progress)
 
 end