From d0e449e501996fd25eed4e0abd5b9336ed7d559a Mon Sep 17 00:00:00 2001 From: tellet-q Date: Tue, 19 May 2026 09:04:28 +0200 Subject: [PATCH] scripts improvements --- tools/hetzner/setup_hetzner.sh | 4 +++- tools/run_client_script.sh | 2 ++ tools/run_experiment.sh | 6 +++++- tools/run_remote_benchmark.sh | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/hetzner/setup_hetzner.sh b/tools/hetzner/setup_hetzner.sh index 32e4a7ca..51888471 100644 --- a/tools/hetzner/setup_hetzner.sh +++ b/tools/hetzner/setup_hetzner.sh @@ -11,7 +11,9 @@ apt-get install -y \ ca-certificates \ curl \ gnupg \ - lsb-release + jq \ + lsb-release \ + rsync mkdir -p /etc/apt/keyrings diff --git a/tools/run_client_script.sh b/tools/run_client_script.sh index 1fe7ac2e..b876aa4f 100644 --- a/tools/run_client_script.sh +++ b/tools/run_client_script.sh @@ -34,6 +34,7 @@ GHCR_PASSWORD=${GHCR_PASSWORD:-""} GHCR_USERNAME=${GHCR_USERNAME:-""} if [[ "$EXPERIMENT_MODE" == "snapshot" ]]; then + ssh_with_retry -o ServerAliveInterval=10 -o ServerAliveCountMax=10 "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}" "rm -rf ~/configurations ~/datasets.json" scp_with_retry "${SCRIPT_PATH}/run_experiment.sh" "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}:~/run_experiment_snapshot.sh" scp_with_retry "${SCRIPT_PATH}/../datasets/datasets.json" "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}:~/datasets.json" scp_with_retry -r "${SCRIPT_PATH}/../experiments/configurations" "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}:~/configurations" @@ -51,6 +52,7 @@ if [[ "$EXPERIMENT_MODE" == "snapshot" ]]; then ssh_with_retry -tt -o ServerAliveInterval=120 -o ServerAliveCountMax=10 "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}" "${RUN_EXPERIMENT}" else + ssh_with_retry -o ServerAliveInterval=10 -o ServerAliveCountMax=10 "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}" "rm -rf ~/configurations ~/datasets.json" scp_with_retry "${SCRIPT_PATH}/run_experiment.sh" "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}:~/run_experiment.sh" scp_with_retry "${SCRIPT_PATH}/../datasets/datasets.json" "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}:~/datasets.json" scp_with_retry -r "${SCRIPT_PATH}/../experiments/configurations" "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}:~/configurations" diff --git a/tools/run_experiment.sh b/tools/run_experiment.sh index 21fff4c8..8eca4152 100644 --- a/tools/run_experiment.sh +++ b/tools/run_experiment.sh @@ -12,7 +12,11 @@ if [[ -n "${GHCR_PASSWORD}" ]] || [[ "${VECTOR_DB_BENCHMARK_IMAGE}" == ghcr.io/* echo "GHCR_PASSWORD and GHCR_USERNAME is required to pull images from ghcr.io" exit 1 fi - echo "${GHCR_PASSWORD}" | docker login ghcr.io -u "${GHCR_USERNAME}" --password-stdin + for i in 1 2 3; do + echo "${GHCR_PASSWORD}" | docker login ghcr.io -u "${GHCR_USERNAME}" --password-stdin && break + echo "docker login attempt ${i} failed, retrying in $((i * 10))s..." + sleep $((i * 10)) + done fi ENGINE_NAME=${ENGINE_NAME:-"qdrant-continuous-benchmark"} diff --git a/tools/run_remote_benchmark.sh b/tools/run_remote_benchmark.sh index 2f61800c..53ca107e 100755 --- a/tools/run_remote_benchmark.sh +++ b/tools/run_remote_benchmark.sh @@ -11,7 +11,8 @@ cleanup() { # bash -x "${SCRIPT_PATH}/tear_down.sh" } -trap 'echo signal received!; kill $(jobs -p); wait; cleanup' SIGINT SIGTERM +# Guarded kill/wait: no-op cleanly when there are no bg jobs (otherwise `set -e` trips on Ctrl-C). EXIT trap below calls cleanup once. +trap 'echo signal received!; bg=$(jobs -p); [ -n "$bg" ] && kill $bg 2>/dev/null; wait 2>/dev/null || true' SIGINT SIGTERM CLOUD_NAME=${CLOUD_NAME:-"hetzner"}