From b9e49c4274bf242c8ef9d1fadaf89cec9d56a228 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 23 Nov 2023 15:28:12 +0100 Subject: [PATCH 1/3] Toolchain: Wait for cluster and single server until they are ready --- toolchain/scripts/toolchain.sh | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/toolchain/scripts/toolchain.sh b/toolchain/scripts/toolchain.sh index 07ef9f6e33..1879daf5ba 100755 --- a/toolchain/scripts/toolchain.sh +++ b/toolchain/scripts/toolchain.sh @@ -362,19 +362,37 @@ function process_server() { echo "" >> /home/summary.md } +### Check status of ArangoDB instance until it is up and running +function wait_for_arangodb_ready() { + res=$(docker exec -it $1 wget -q -S -O - http://localhost:8529/_api/version 2>&1 | grep -m 1 HTTP/ | awk '{print $2}') + if [ "$res" = "200" ]; then + log "Server is ready: $1" + else + log "Server not ready: $1 $res" + sleep 2s + wait_for_arangodb_ready $1 + fi +} + + ### Setup and run an ArangoDB docker image function run_arangodb_container() { container_name="$1" image_id="$2" if [ $TRAP == 0 ]; then - log "[run_arangodb_container] Run single server" - docker run -e ARANGO_NO_AUTH=1 --net docs_net --name "$container_name" -v arangosh:/tmp -d "$image_id" --server.endpoint http+tcp://0.0.0.0:8529 - log "[run_arangodb_container] Run cluster server" docker run -d --net=docs_net -e ARANGO_NO_AUTH=1 --name="$container_name"_cluster \ "$image_id" \ arangodb --starter.local --starter.data-dir=./localdata + + log "[run_arangodb_container] Run single server" + docker run -d --net docs_net -e ARANGO_NO_AUTH=1 --name "$container_name" -v arangosh:/tmp \ + "$image_id" \ + --server.endpoint http+tcp://0.0.0.0:8529 + + wait_for_arangodb_ready "$container_name" + wait_for_arangodb_ready "$container_name"_cluster fi } From 3b33fbaf09efe3cedd008a1cbf5430fbfa5d7c03 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 23 Nov 2023 16:26:47 +0100 Subject: [PATCH 2/3] Add limit to retries --- toolchain/scripts/toolchain.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/toolchain/scripts/toolchain.sh b/toolchain/scripts/toolchain.sh index 1879daf5ba..a2e08ac41d 100755 --- a/toolchain/scripts/toolchain.sh +++ b/toolchain/scripts/toolchain.sh @@ -364,13 +364,20 @@ function process_server() { ### Check status of ArangoDB instance until it is up and running function wait_for_arangodb_ready() { + attemps=1 res=$(docker exec -it $1 wget -q -S -O - http://localhost:8529/_api/version 2>&1 | grep -m 1 HTTP/ | awk '{print $2}') if [ "$res" = "200" ]; then log "Server is ready: $1" else log "Server not ready: $1 $res" - sleep 2s - wait_for_arangodb_ready $1 + let attemps++ + if [ "$attemps" -gt 30 ]; then + log "Giving up waiting on server." + exit 1 + else + sleep 2s + wait_for_arangodb_ready $1 + fi fi } From 14975aa3daadc191293b49aab5c3e9fec541bbf2 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 23 Nov 2023 16:53:14 +0100 Subject: [PATCH 3/3] Fix counter --- toolchain/scripts/toolchain.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/toolchain/scripts/toolchain.sh b/toolchain/scripts/toolchain.sh index a2e08ac41d..d61217e6ee 100755 --- a/toolchain/scripts/toolchain.sh +++ b/toolchain/scripts/toolchain.sh @@ -364,19 +364,19 @@ function process_server() { ### Check status of ArangoDB instance until it is up and running function wait_for_arangodb_ready() { - attemps=1 + attempts="${2:-1}" res=$(docker exec -it $1 wget -q -S -O - http://localhost:8529/_api/version 2>&1 | grep -m 1 HTTP/ | awk '{print $2}') if [ "$res" = "200" ]; then log "Server is ready: $1" else log "Server not ready: $1 $res" - let attemps++ - if [ "$attemps" -gt 30 ]; then + let attempts++ + if [ "$attempts" -gt 30 ]; then log "Giving up waiting on server." exit 1 else sleep 2s - wait_for_arangodb_ready $1 + wait_for_arangodb_ready $1 $attempts fi fi }