diff --git a/hadoop-ozone/dist/src/main/compose/common/hadoop-test.sh b/hadoop-ozone/dist/src/main/compose/common/hadoop-test.sh index 29b4937a4aaa..ae1b8545820d 100755 --- a/hadoop-ozone/dist/src/main/compose/common/hadoop-test.sh +++ b/hadoop-ozone/dist/src/main/compose/common/hadoop-test.sh @@ -59,6 +59,7 @@ for HADOOP_TEST_IMAGE in $HADOOP_TEST_IMAGES; do hadoop_version=$(docker run --rm "${HADOOP_TEST_IMAGE}" bash -c "hadoop version | grep -m1 '^Hadoop' | cut -f2 -d' '") export HADOOP_MAJOR_VERSION=${hadoop_version%%.*} + retry docker-compose --ansi never --profile hadoop pull nm rm docker-compose --ansi never --profile hadoop up -d nm rm execute_command_in_container rm hadoop version diff --git a/hadoop-ozone/dist/src/main/compose/testlib.sh b/hadoop-ozone/dist/src/main/compose/testlib.sh index 0dc67bff490e..eb3ede6f47a0 100755 --- a/hadoop-ozone/dist/src/main/compose/testlib.sh +++ b/hadoop-ozone/dist/src/main/compose/testlib.sh @@ -179,6 +179,8 @@ start_docker_env(){ docker-compose --ansi never down --remove-orphans + retry docker-compose --ansi never pull + opts="" if has_scalable_datanode; then opts="--scale datanode=${datanode_count}" @@ -357,6 +359,30 @@ save_container_logs() { done } +retry() { + local -i n=0 + local -i attempts=${RETRY_ATTEMPTS:-3} + local -i rc=0 + + set +e + while [[ $n -lt $attempts ]]; do + if "$@"; then + rc=0 + break + fi + let n++ + + if [[ $n -eq $attempts ]]; then + echo "ERROR: $n attempts failed to: $@" + rc=1 + else + sleep ${RETRY_SLEEP:-3} + fi + done + set -e + + return ${rc} +} ## @description wait until the port is available on the given host ## @param The host to check for the port