mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-01-23 02:14:37 +00:00
docker-test: fix condition for max tries
Replace a recursive call with a loop. Reported-by: Andrei Vagin <avagin@gmail.com> Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
This commit is contained in:
parent
088390ea89
commit
1004625fac
1 changed files with 9 additions and 11 deletions
|
|
@ -87,27 +87,25 @@ print_logs () {
|
|||
}
|
||||
|
||||
declare -i max_restore_container_tries=3
|
||||
current_iteration=
|
||||
|
||||
restore_container () {
|
||||
CHECKPOINT_NAME=$1
|
||||
|
||||
docker start --checkpoint "$CHECKPOINT_NAME" cr 2>&1 | tee log || {
|
||||
for i in $(seq $max_restore_container_tries); do
|
||||
docker start --checkpoint "$CHECKPOINT_NAME" cr 2>&1 | tee log && break
|
||||
|
||||
# FIXME: There is a race condition in docker/containerd that causes
|
||||
# docker to occasionally fail when starting a container from a
|
||||
# checkpoint immediately after the checkpoint has been created.
|
||||
# https://github.com/moby/moby/issues/42900
|
||||
if [ "$current_iteration" -gt "$max_restore_container_tries" ]; then
|
||||
if grep -Eq '^Error response from daemon: failed to upload checkpoint to containerd: commit failed: content sha256:.*: already exists$' log; then
|
||||
echo "Retry container restore: $i/$max_restore_container_tries"
|
||||
sleep 1;
|
||||
else
|
||||
print_logs
|
||||
fi
|
||||
grep -Eq '^Error response from daemon: failed to upload checkpoint to containerd: commit failed: content sha256:.*: already exists$' log && {
|
||||
((current_iteration+=1))
|
||||
echo "Retry container restore: $current_iteration"
|
||||
sleep 1;
|
||||
restore_container "$CHECKPOINT_NAME"
|
||||
} ||
|
||||
print_logs
|
||||
} && current_iteration=0
|
||||
|
||||
done
|
||||
}
|
||||
|
||||
# Scenario: Create multiple containers and checkpoint and restore them once
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue