From 2750fa4aaa5fa724930bd51d8884e0811ac0f6e0 Mon Sep 17 00:00:00 2001 From: Nick Gauthier Date: Thu, 22 Apr 2010 16:04:09 -0400 Subject: [PATCH] simple deadlock retry --- lib/hydra/master.rb | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/hydra/master.rb b/lib/hydra/master.rb index 6a89891..bce6367 100644 --- a/lib/hydra/master.rb +++ b/lib/hydra/master.rb @@ -83,13 +83,18 @@ module Hydra #:nodoc: # Process the results coming back from the worker. def process_results(worker, message) - @incomplete_files.delete_at(@incomplete_files.index(message.file)) - trace "#{@incomplete_files.size} Files Remaining" - @event_listeners.each{|l| l.file_end(message.file, message.output) } - if @incomplete_files.empty? - shutdown_all_workers + if message.output =~ /ActiveRecord::StatementInvalid(.*)[Dd]eadlock/ + trace "Deadlock detected running [#{message.file}]. Will retry at the end" + @files.push(message.file) else - send_file(worker) + @incomplete_files.delete_at(@incomplete_files.index(message.file)) + trace "#{@incomplete_files.size} Files Remaining" + @event_listeners.each{|l| l.file_end(message.file, message.output) } + if @incomplete_files.empty? + shutdown_all_workers + else + send_file(worker) + end end end