From 87ff257cf0540988cc3300535866a7251120e622 Mon Sep 17 00:00:00 2001 From: Vincent Riquer Date: Tue, 26 Mar 2013 17:30:23 +0100 Subject: [PATCH] retransmission on worker->master communication failure --- atom | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/atom b/atom index 3d241b5..e4c7513 100755 --- a/atom +++ b/atom @@ -1237,6 +1237,11 @@ worker() { do echo work read line + until [[ $line != AtOM:ComFail ]] + do + echo work + read line + done if [[ $line == AtOM:Die ]] then break @@ -1325,8 +1330,20 @@ worker() { if "${cmd_arg[@]}" >/dev/null 2>>"$tempdir/errors.log" then echo "finished $taskid|$sourcefileid|$destfileid|$destfilename" + read line + until [[ $line == AtOM:OK ]] + do + echo "finished $taskid|$sourcefileid|$destfileid|$destfilename" + read line + done else echo "failed $taskid" + read line + until [[ $line == AtOM:OK ]] + do + echo "failed $taskid" + read line + done [ -n "$filename" ] \ && eval rm -f $filename fi @@ -1335,6 +1352,11 @@ worker() { then echo "cleanup $required" read answer + until [[ $answer != AtOM:ComFail ]] + do + echo "cleanup $required" + read answer + done if (( answer == 1 )) then eval rm -f $cleanup @@ -1453,7 +1475,8 @@ master() { rm "$tempdir"/worker${workerid}{in,out} fi ;; - ?(f)'inished') + 'finished') + eval 'echo AtOM:OK >&'$((workerid+100)) (( active-- )) || true taskid=${workerquery%%|*} rest="${workerquery#*|}|" @@ -1478,6 +1501,7 @@ master() { fi ;; 'failed') + eval 'echo AtOM:OK >&'$((workerid+100)) (( --active )) || true (( ++failed )) taskid=$workerquery @@ -1504,6 +1528,9 @@ master() { eval echo 0 '>&'$((100+workerid)) fi ;; + *) + eval 'echo "AtOM:ComFail" >&'$((100+workerid)) + ;; esac fi }