From 2a4d5344626998a28c88d3ab5b5f0a9f7f78427d Mon Sep 17 00:00:00 2001 From: Radostin Stoyanov Date: Tue, 28 Nov 2023 13:18:23 +0000 Subject: [PATCH] docker-test: fix condition for max tries Replace a recursive call with a loop. Reported-by: Andrei Vagin Signed-off-by: Radostin Stoyanov --- scripts/ci/docker-test.sh | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/scripts/ci/docker-test.sh b/scripts/ci/docker-test.sh index 22d326a371..7c0cc12e1d 100755 --- a/scripts/ci/docker-test.sh +++ b/scripts/ci/docker-test.sh @@ -87,27 +87,24 @@ 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 - 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" + echo "Retry container restore: $i/$max_restore_container_tries" sleep 1; - restore_container "$CHECKPOINT_NAME" } || print_logs - } && current_iteration=0 + + done } # Scenario: Create multiple containers and checkpoint and restore them once