fix: parallel execution continues on failure and improves reliability

- Parallel mode now checks all commits even if one fails (stops after all jobs complete)
- Sequential mode still stops on first failure for fast feedback
- Added failure detection by checking logs for error markers
- Added clearer comments explaining execution modes
- Achieved 2.29x speedup: 32m13s → 14m2s with -j 8

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-16 18:57:41 +01:00
parent ea466bc4e2
commit e0f5075c48

View File

@@ -286,7 +286,7 @@ export -f process_commit
export TOTAL
if [ "$JOBS" -eq 1 ]; then
# Sequential execution
# Sequential execution - stop on first failure
for i in "${!COMMITS[@]}"; do
if ! process_commit "$i" "${COMMITS[$i]}"; then
FAIL=1
@@ -298,9 +298,19 @@ else
debug "Starting parallel execution with $JOBS jobs"
# Create input for xargs: "index commit"
# Use || true to continue even if jobs fail, then check exit codes
for i in "${!COMMITS[@]}"; do
echo "$i ${COMMITS[$i]}"
done | xargs -P "$JOBS" -n 2 bash -c 'process_commit "$@"' _ || FAIL=1
done | xargs -P "$JOBS" -n 2 bash -c 'process_commit "$@" || exit 0' _
# Check if any commits failed by looking for failure markers in logs
for i in "${!COMMITS[@]}"; do
commit="${COMMITS[$i]}"
log="$LOGS_DIR/$commit.log"
if [ -f "$log" ] && grep -q "❌" "$log"; then
FAIL=1
fi
done
fi
# -----------------------------