lib/pione/agent/task-worker.rb in pione-0.3.0 vs lib/pione/agent/task-worker.rb in pione-0.3.1

- old
+ new

@@ -72,11 +72,18 @@ def transit_to_execute_task(task) # setup rule engine engine = make_engine(task) # start the engine - @execution_thread = Thread.new {engine.handle} + @execution_thread = Thread.new do + begin + engine.handle + rescue RuleEngine::ActionError => e + write(TupleSpace::CommandTuple.new("terminate", [System::Status.error(e)])) + terminate + end + end # spawn child task worker if flow if engine.rule_definition.rule_type == "flow" spawn_child_task_worker(task) end @@ -133,10 +140,10 @@ foreground = TupleSpace::ForegroundTuple.new(task.domain_id, task.digest) # child worker loop while @execution_thread.alive? do if @execution_thread.status == "sleep" - if child_agent.nil? or not(child_agent.terminated?) + if child_agent.nil? or child_agent.terminated? # when there isn't active child agent child_agent = self.class.new(tuple_space_server, @features, @env) child_agent.once = true # make log record