From f54177bb0a549cdf5773c20f3453f7bb0f68b0ad Mon Sep 17 00:00:00 2001 From: Mick Semb Wever Date: Mon, 8 Jan 2024 23:29:57 +0100 Subject: [PATCH] Docker test container fixes: remove unused files/folders in image, and use envs instead of env-file Adds warning and reduces container requested cpus if over docker daemon limits. patch by Mick Semb Wever; reviewed by Brandon Williams for INFRA-25202 --- .build/docker/_docker_init_tests.sh | 8 ++++++++ .build/docker/run-tests.sh | 18 ++++++++---------- .build/docker/ubuntu2004_test.docker | 6 ++++-- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/.build/docker/_docker_init_tests.sh b/.build/docker/_docker_init_tests.sh index 7c90833582..1efbd87526 100755 --- a/.build/docker/_docker_init_tests.sh +++ b/.build/docker/_docker_init_tests.sh @@ -36,4 +36,12 @@ if [ -d "${DIST_DIR}/test/logs" ]; then find "${DIST_DIR}/test/logs" -type f -name "*.log" | xargs xz -qq fi popd >/dev/null + +# check/clean containerfs (it can leak on host) +if [ -d /home/cassandra-tmp/.m2/repository ]; then + echo "WARN: /home/cassandra-tmp/.m2/repository exists" +fi +# these happen when the image hasn't pre-downloaded all the ccm versions used in tests +rm -rf /tmp/ccm-*.tar.gz + exit ${status} \ No newline at end of file diff --git a/.build/docker/run-tests.sh b/.build/docker/run-tests.sh index 88a570b891..44fc82da06 100755 --- a/.build/docker/run-tests.sh +++ b/.build/docker/run-tests.sh @@ -146,6 +146,11 @@ case ${target} in esac docker_cpus=$(echo "scale=2; ${cores} / ( ${jenkins_executors} )" | bc) +docker_cpus_limit=$(docker info | grep CPUs | cut -d" " -f3) +if (( $(echo "${docker_cpus} > ${docker_cpus_limit}" |bc -l) )) ; then + echo "WARNING: requested more cpus (${docker_cpus}) than docker cpu limit (${docker_cpus_limit}), reducing cpus…" + docker_cpus=${docker_cpus_limit} +fi # hack: long-test does not handle limited CPUs if [ "${target}" == "long-test" ] ; then @@ -156,7 +161,7 @@ else docker_flags="--cpus=${docker_cpus} -m 5g --memory-swap 5g" fi -docker_flags="${docker_flags} --env-file build/env.list -d --rm" +docker_flags="${docker_flags} -d --rm" # make sure build_dir is good mkdir -p ${build_dir}/tmp || true @@ -186,14 +191,7 @@ else fi # the docker container's env -touch build/env.list -cat > build/env.list <