Race Condition Fix and Retry Logic | Generated by AI

Home 2026.06

The fix is applied. Here’s a summary:


What failed: Run 27260998201 (Deploy Jekyll, 2026-06-10 07:39 UTC)

Where it failed: “Lint Markdown files” step — committed chore(lint): Fix markdown lint issues, then the push was rejected twice.

Root cause: Race condition. The workflow has 4 separate commit+push steps (lang update, notes translation, table fix, lint). Each used this fragile pattern:

git push || { git pull --rebase; git push; }

When another concurrent run pushes between the rebase and the second push, it fails with no recovery. This time the lint step was the unlucky one.

What I fixed: Replaced all 4 push blocks with a push_with_retry() function that retries up to 3 times with git pull --rebase and a 2-second backoff between attempts:

push_with_retry() {
  for attempt in 1 2 3; do
    git push && return 0
    echo "Push failed (attempt $attempt/3), pulling and rebasing..."
    git pull --rebase || true
    sleep 2
  done
  echo "Push failed after 3 attempts"
  return 1
}

Side note: There’s also a deprecation warning — actions/checkout@v4 and actions/setup-python@v4 run on Node.js 20, which will be forced to Node.js 24 starting June 16, 2026 (6 days from now). You may want to bump to actions/checkout@v5 and actions/setup-python@v5 if they’re available, or set FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true to opt in early.

Want me to commit and push this fix?


Generated by AI. Curating and sharing still takes effort. If you find it useful, feel free to donate. WeChat: @lzwjavaWeChat QR · X: @lzwjava · Say hi 👋

Back Donate