diff --git a/lib/tools/sanityChecks b/lib/tools/sanityChecks index e0d089b..d209a31 100644 --- a/lib/tools/sanityChecks +++ b/lib/tools/sanityChecks @@ -161,4 +161,6 @@ Sanity checks raised $sanitywarn warnings... Hit Control-C to abort." >&2 echo -en "\r\033[K" fi fi -} \ No newline at end of file +} + +# vim:set ts=8 sw=8: diff --git a/lib/workers/master b/lib/workers/master index f475788..03117e6 100644 --- a/lib/workers/master +++ b/lib/workers/master @@ -17,213 +17,223 @@ master() { return 0 fi - echo ' - SELECT COUNT(*) - FROM tasks - WHERE status = 0 - AND requires IN ( - SELECT id - FROM tasks - WHERE status = 4 - ); + until (( active == concurrency || remaining == 0 )) + do + echo ' + SELECT COUNT(*) + FROM tasks + WHERE status = 0 + AND requires IN ( + SELECT id + FROM tasks + WHERE status = 4 + ); - SELECT - id, - source_file, - cmd_arg0, - cmd_arg1, - cmd_arg2, - cmd_arg3, - cmd_arg4, - cmd_arg5, - cmd_arg6, - cmd_arg7, - cmd_arg8, - cmd_arg9, - cmd_arg10, - cmd_arg11, - cmd_arg12, - cmd_arg13, - cmd_arg14, - cmd_arg15, - cmd_arg16, - cmd_arg17, - cmd_arg18, - cmd_arg19, - cmd_arg20, - cmd_arg21, - cmd_arg22, - cmd_arg23, - cmd_arg24, - cmd_arg25, - cmd_arg26, - cmd_arg27, - cmd_arg28, - cmd_arg29, - cmd_arg30, - cmd_arg31, - cmd_arg32, - cmd_arg33, - cmd_arg34, - cmd_arg35, - cmd_arg36, - cmd_arg37, - cmd_arg38, - cmd_arg39, - cmd_arg40, - cmd_arg41, - cmd_arg42, - cmd_arg43, - cmd_arg44, - cmd_arg45, - cmd_arg46, - cmd_arg47, - cmd_arg48, - cmd_arg49, - cmd_arg50, - cmd_arg51, - cmd_arg52, - cmd_arg53, - cmd_arg54, - cmd_arg55, - cmd_arg56, - cmd_arg57, - cmd_arg58, - cmd_arg59, - cleanup, - fileid, - filename - FROM tasks - WHERE status = 0 - AND requires IN ( - SELECT id - FROM tasks - WHERE status = 4 - ORDER BY source_file - /* LIMIT 1 */ - ) - ORDER BY source_file - LIMIT 1; - '>&3 + SELECT + id, + source_file, + cmd_arg0, + cmd_arg1, + cmd_arg2, + cmd_arg3, + cmd_arg4, + cmd_arg5, + cmd_arg6, + cmd_arg7, + cmd_arg8, + cmd_arg9, + cmd_arg10, + cmd_arg11, + cmd_arg12, + cmd_arg13, + cmd_arg14, + cmd_arg15, + cmd_arg16, + cmd_arg17, + cmd_arg18, + cmd_arg19, + cmd_arg20, + cmd_arg21, + cmd_arg22, + cmd_arg23, + cmd_arg24, + cmd_arg25, + cmd_arg26, + cmd_arg27, + cmd_arg28, + cmd_arg29, + cmd_arg30, + cmd_arg31, + cmd_arg32, + cmd_arg33, + cmd_arg34, + cmd_arg35, + cmd_arg36, + cmd_arg37, + cmd_arg38, + cmd_arg39, + cmd_arg40, + cmd_arg41, + cmd_arg42, + cmd_arg43, + cmd_arg44, + cmd_arg45, + cmd_arg46, + cmd_arg47, + cmd_arg48, + cmd_arg49, + cmd_arg50, + cmd_arg51, + cmd_arg52, + cmd_arg53, + cmd_arg54, + cmd_arg55, + cmd_arg56, + cmd_arg57, + cmd_arg58, + cmd_arg59, + cleanup, + fileid, + filename + FROM tasks + WHERE status = 0 + AND requires IN ( + SELECT id + FROM tasks + WHERE status = 4 + ORDER BY source_file + /* LIMIT 1 */ + ) + ORDER BY source_file + LIMIT 1; + '>&3 - read -u4 ready - if (( ready > 0 )) - then - createworker - return 0 - fi + read -u4 ready + if (( ready > 0 )) + then + createworker + continue + fi - echo ' - SELECT COUNT(*) - FROM tasks - WHERE status = 0 - AND requires is NULL; + echo ' + SELECT COUNT(*) + FROM tasks + WHERE status = 0 + AND requires is NULL; - SELECT - id, - source_file, - cmd_arg0, - cmd_arg1, - cmd_arg2, - cmd_arg3, - cmd_arg4, - cmd_arg5, - cmd_arg6, - cmd_arg7, - cmd_arg8, - cmd_arg9, - cmd_arg10, - cmd_arg11, - cmd_arg12, - cmd_arg13, - cmd_arg14, - cmd_arg15, - cmd_arg16, - cmd_arg17, - cmd_arg18, - cmd_arg19, - cmd_arg20, - cmd_arg21, - cmd_arg22, - cmd_arg23, - cmd_arg24, - cmd_arg25, - cmd_arg26, - cmd_arg27, - cmd_arg28, - cmd_arg29, - cmd_arg30, - cmd_arg31, - cmd_arg32, - cmd_arg33, - cmd_arg34, - cmd_arg35, - cmd_arg36, - cmd_arg37, - cmd_arg38, - cmd_arg39, - cmd_arg40, - cmd_arg41, - cmd_arg42, - cmd_arg43, - cmd_arg44, - cmd_arg45, - cmd_arg46, - cmd_arg47, - cmd_arg48, - cmd_arg49, - cmd_arg50, - cmd_arg51, - cmd_arg52, - cmd_arg53, - cmd_arg54, - cmd_arg55, - cmd_arg56, - cmd_arg57, - cmd_arg58, - cmd_arg59, - cleanup, - fileid, - filename - FROM tasks - WHERE status = 0 - AND requires is NULL - ORDER BY source_file - LIMIT 1; - ' >&3 + SELECT + id, + source_file, + cmd_arg0, + cmd_arg1, + cmd_arg2, + cmd_arg3, + cmd_arg4, + cmd_arg5, + cmd_arg6, + cmd_arg7, + cmd_arg8, + cmd_arg9, + cmd_arg10, + cmd_arg11, + cmd_arg12, + cmd_arg13, + cmd_arg14, + cmd_arg15, + cmd_arg16, + cmd_arg17, + cmd_arg18, + cmd_arg19, + cmd_arg20, + cmd_arg21, + cmd_arg22, + cmd_arg23, + cmd_arg24, + cmd_arg25, + cmd_arg26, + cmd_arg27, + cmd_arg28, + cmd_arg29, + cmd_arg30, + cmd_arg31, + cmd_arg32, + cmd_arg33, + cmd_arg34, + cmd_arg35, + cmd_arg36, + cmd_arg37, + cmd_arg38, + cmd_arg39, + cmd_arg40, + cmd_arg41, + cmd_arg42, + cmd_arg43, + cmd_arg44, + cmd_arg45, + cmd_arg46, + cmd_arg47, + cmd_arg48, + cmd_arg49, + cmd_arg50, + cmd_arg51, + cmd_arg52, + cmd_arg53, + cmd_arg54, + cmd_arg55, + cmd_arg56, + cmd_arg57, + cmd_arg58, + cmd_arg59, + cleanup, + fileid, + filename + FROM tasks + WHERE status = 0 + AND requires is NULL + ORDER BY source_file + LIMIT 1; + ' >&3 - read -u4 ready + read -u4 ready - if (( active == 0 && ready == 0 )) - then - dumpfile="$tempdir/tasks-$(date -Iseconds).csv" - cat <<-EOF + if (( active == 0 && ready == 0 )) + then + dumpfile="$tempdir/tasks-$(date -Iseconds).csv" + cat <<-EOF - $remaining TASKS LEFT, NONE READY! + $remaining TASKS LEFT, NONE READY! - Something went wrong, dumping tasks table to $dumpfile - EOF - cat >&3 <<-EOSQL - .mode csv - .headers on - .output $dumpfile - SELECT * from tasks; - .mode list - .headers off - .output stdout - COMMIT; - EOSQL - closeDatabase - echo "Waiting for children to come back home..." - wait - echo $'\nGood luck!' - exit 1 - elif (( ready == 0 )) - then - sleep 0.1 - else - createworker - fi + Something went wrong, dumping tasks table to $dumpfile + EOF + cat >&3 <<-EOSQL + .mode csv + .headers on + .output $dumpfile + SELECT * from tasks; + .mode list + .headers off + .output stdout + COMMIT; + EOSQL + closeDatabase + echo "Waiting for children to come back home..." + wait + echo $'\nGood luck!' + exit 1 + elif (( ready == 0 )) + then + sleep 0.1 + else + createworker + fi + echo ' + SELECT COUNT(*) + FROM tasks + WHERE status = 0; + '>&3 + + read -u4 remaining + done fi }