diff --git a/docker-compose.yml b/docker-compose.yml index b5530552b..92e51f9ef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -56,6 +56,7 @@ services: - MONGO3=mongo-1-3 - ARBITER=mongo-1-arbiter - RS=rs1 + - VERSION=${TEST_MONGODB_IMAGE} entrypoint: [ "/scripts/setup.sh" ] networks: - rs1 @@ -112,6 +113,7 @@ services: - MONGO3=mongo-2-3 - ARBITER=mongo-2-arbiter - RS=rs2 + - VERSION=${TEST_MONGODB_IMAGE} entrypoint: [ "/scripts/setup.sh" ] networks: - rs2 @@ -162,6 +164,7 @@ services: - MONGO3=mongo-cnf-3 - RS=cnf-serv - PORT=27017 + - VERSION=${TEST_MONGODB_IMAGE} entrypoint: [ "/scripts/setup.sh","cnf_servers" ] networks: - cnf-serv @@ -205,6 +208,7 @@ services: - PORT1=27017 - PORT2=27017 - PORT3=27017 + - VERSION=${TEST_MONGODB_IMAGE} entrypoint: [ "/scripts/init-shard.sh" ] restart: on-failure:20 diff --git a/docker/scripts/init-shard.sh b/docker/scripts/init-shard.sh index 8467b74f8..f5de49498 100755 --- a/docker/scripts/init-shard.sh +++ b/docker/scripts/init-shard.sh @@ -1,4 +1,16 @@ #!/bin/bash +# `mongosh` is used starting from MongoDB 5.x +MONGODB_CLIENT="mongosh --quiet" +PARSED=(${VERSION//:/ }) +MONGODB_VERSION=${PARSED[1]} +MONGODB_VENDOR=${PARSED[0]} +if [ "`echo ${MONGODB_VERSION} | cut -c 1`" = "4" ]; then + MONGODB_CLIENT="mongo" +fi +if [ "`echo ${MONGODB_VERSION} | cut -c 1`" = "5" ] && [ ${MONGODB_VENDOR} == "percona/percona-server-mongodb" ]; then + MONGODB_CLIENT="mongo" +fi +echo "MongoDB vendor, client and version: ${MONGODB_VENDOR} ${MONGODB_CLIENT} ${MONGODB_VERSION}" mongodb1=`getent hosts ${MONGOS} | awk '{ print $1 }'` @@ -17,7 +29,7 @@ mongodb33=`getent hosts ${MONGO33} | awk '{ print $1 }'` port=${PORT:-27017} echo "Waiting for startup.." -until mongo --host ${mongodb1}:${port} --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)' &>/dev/null; do +until ${MONGODB_CLIENT} --host ${mongodb1}:${port} --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)' &>/dev/null; do printf '.' sleep 1 done @@ -25,8 +37,12 @@ done echo "Started.." echo init-shard.sh time now: `date +"%T" ` -mongo --host ${mongodb1}:${port} </dev/null; do +until ${MONGODB_CLIENT} --host ${mongodb1}:${port} --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)' &>/dev/null; do printf '.' sleep 1 done @@ -20,7 +32,7 @@ echo setup.sh time now: `date +"%T" ` function cnf_servers() { echo "setup cnf servers on ${MONGO1}(${mongodb1}:${port})" - mongo --host ${mongodb1}:${port} <