fix(backup): smaller forgejo dump chunks with per-chunk retries
Use 4m split chunks and up to 8 retries per chunk to survive intermittent kubectl cp/exec websocket EOF on large dumps.
This commit is contained in:
parent
ae85effd0c
commit
dd6dc38e1e
1 changed files with 19 additions and 2 deletions
|
|
@ -135,10 +135,27 @@ else
|
||||||
chunk_dir="$(mktemp -d)"
|
chunk_dir="$(mktemp -d)"
|
||||||
refresh_prod_pod
|
refresh_prod_pod
|
||||||
parts="$(kubectl exec --request-timeout=120 -n "${FORGEJO_NAMESPACE}" "${PROD_POD}" -c gitea -- \
|
parts="$(kubectl exec --request-timeout=120 -n "${FORGEJO_NAMESPACE}" "${PROD_POD}" -c gitea -- \
|
||||||
sh -c "rm -f /tmp/forgejo-backup-part-*; split -b 8m '${DUMP_REMOTE}' /tmp/forgejo-backup-part- && ls /tmp/forgejo-backup-part-*")"
|
sh -c "rm -f /tmp/forgejo-backup-part-*; split -b 4m '${DUMP_REMOTE}' /tmp/forgejo-backup-part- && ls /tmp/forgejo-backup-part-*")"
|
||||||
for part in ${parts}; do
|
for part in ${parts}; do
|
||||||
base="$(basename "${part}")"
|
base="$(basename "${part}")"
|
||||||
copy_from_pod "${part}" "${chunk_dir}/${base}" || { bad "forgejo dump" "chunk copy failed: ${base}"; exit 1; }
|
local_chunk="${chunk_dir}/${base}"
|
||||||
|
if [[ -f "${local_chunk}" && -s "${local_chunk}" ]]; then
|
||||||
|
ok "forgejo dump" "reuse cached chunk ${base}"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
chunk_ok=0
|
||||||
|
for chunk_try in 1 2 3 4 5 6 7 8; do
|
||||||
|
if copy_from_pod "${part}" "${local_chunk}"; then
|
||||||
|
chunk_ok=1
|
||||||
|
ok "forgejo dump" "chunk ${base} (${chunk_try})"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep $((chunk_try * 3))
|
||||||
|
done
|
||||||
|
if [[ "${chunk_ok}" -ne 1 ]]; then
|
||||||
|
bad "forgejo dump" "chunk copy failed: ${base}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
cat "${chunk_dir}"/forgejo-backup-part-* > "${DUMP_PLAIN}"
|
cat "${chunk_dir}"/forgejo-backup-part-* > "${DUMP_PLAIN}"
|
||||||
rm -rf "${chunk_dir}"
|
rm -rf "${chunk_dir}"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue