diff --git a/lib/workers/master b/lib/workers/master index 831fcdc..7c22c7e 100644 --- a/lib/workers/master +++ b/lib/workers/master @@ -8,7 +8,112 @@ master() { SELECT COUNT(*) FROM tasks WHERE status = 0; + '>&3 + read -u4 remaining + if (( remaining == 0 )) + then + sleep 0.1 + return 0 + fi + + 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 + + read -u4 ready + if (( ready > 0 )) + then + createworker + return 0 + fi + + echo ' SELECT COUNT(*) FROM tasks WHERE status = 0 @@ -86,15 +191,12 @@ master() { ORDER BY source_file LIMIT 1; ' >&3 - read -u4 remaining + read -u4 ready - if (( remaining == 0 )) + + if (( active == 0 && ready == 0 )) then - sleep 0.1 - return 0 - elif (( active == 0 && ready == 0 )) - then - dumpfile="$tmpdir/tasks-$(date -Iseconds).csv" + dumpfile="$tempdir/tasks-$(date -Iseconds).csv" cat <<-EOF