From 3f1c057af351c651c509b1e71f490c7718f39de7 Mon Sep 17 00:00:00 2001 From: Farhan Umer Date: Fri, 16 Feb 2024 17:09:08 +0500 Subject: [PATCH] chore: upgrade mongo4.4 to mongo5.0.24 --- docker-compose.yml | 2 +- upgrade_mongo_5_0.sh | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100755 upgrade_mongo_5_0.sh diff --git a/docker-compose.yml b/docker-compose.yml index 8d8a0dfe31..694dbaf641 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -177,7 +177,7 @@ services: command: mongod --nojournal --storageEngine wiredTiger container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.mongo" hostname: mongo.devstack.edx - image: mongo:${MONGO_VERSION:-4.4.18} + image: mongo:${MONGO_VERSION:-5.0.24} networks: default: aliases: diff --git a/upgrade_mongo_5_0.sh b/upgrade_mongo_5_0.sh new file mode 100755 index 0000000000..5fa01cb741 --- /dev/null +++ b/upgrade_mongo_5_0.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +# This script will upgrade a devstack that was previosly running Mongo DB 4.4 to MongoDB 5.0.24 + +. scripts/colors.sh + +# Upgrade to mongo 5.0.24 +export MONGO_VERSION=5.0.24 + +echo +echo -e "${GREEN}Restarting Mongo on version ${MONGO_VERSION}${NC}" +make dev.up.mongo +mongo_container="$(make --silent --no-print-directory dev.print-container.mongo)" + +echo -e "${GREEN}Waiting for MongoDB...${NC}" +until docker exec "$mongo_container" mongo --eval 'db.serverStatus()' &> /dev/null +do + printf "." + sleep 1 +done + +echo -e "${GREEN}MongoDB ready.${NC}" +MONGO_VERSION_LIVE=$(docker exec -it "$mongo_container" mongo --quiet --eval "printjson(db.version())") +MONGO_VERSION_COMPAT=$(docker exec -it "$mongo_container" mongo --quiet \ + --eval "printjson(db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )['featureCompatibilityVersion'])") +echo -e "${GREEN}Mongo Server version: ${MONGO_VERSION_LIVE}${NC}" +echo -e "${GREEN}Mongo FeatureCompatibilityVersion version: ${MONGO_VERSION_COMPAT}${NC}" + +if echo "${MONGO_VERSION_COMPAT}" | grep -q "5\.0" ; then + echo -e "${GREEN}Upgrading FeatureCompatibilityVersion to 5.0${NC}" + docker exec -it "$mongo_container" mongo --eval "db.adminCommand( { setFeatureCompatibilityVersion: \"5.0\" } )" +else + echo -e "${GREEN}FeatureCompatibilityVersion already set to 5.0${NC}" +fi