diff --git a/mongo/hooks/init b/mongo/hooks/init index d2e6a60..916b9da 100755 --- a/mongo/hooks/init +++ b/mongo/hooks/init @@ -50,3 +50,63 @@ $MASTER_BASE_SERVICE_NAME: labels: - compose.config_hash=$config_hash " + +ensure_db_docker_running + + +## ReplicaSet initialization + +cmd="rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: '$SERVICE_NAME:27017' } ]})" +debug "${WHITE}running:$NORMAL $cmd" + +out=$(ddb <<<"$cmd") + +if [[ "$out" == *"\"codeName\" : \"AlreadyInitialized\""* ]]; then + info "ReplicaSet already initialized." +elif [[ "$out" == *"\"ok\" : 1"* ]]; then + info "ReplicaSet initialized. " +else + err "ReplicaSet initialisation failed:" + echo "$out" >&2 + exit 13 +fi + + +## Enable read if db version >= 4.2 + +if ! version=$(mongo:db:version); then + err "Couldn't get database version" + exit 1 +fi + +echo "Current mongo database version: '$version'." >&2 + +if version_gt "$version" 4.1; then + cmd="db.getMongo().setSecondaryOk()" + debug "${WHITE}running:$NORMAL $cmd" + + out=$(ddb <<<"$cmd") || { + err "Failed database command. Output:" + echo "$out" | prefix " | " >&2 + exit 1 + } + +fi + + +## This is some sort of migrating code and should be moved to upgrade +## directory. + +major_version=${version%.*} + +cmd="db.adminCommand( { setFeatureCompatibilityVersion: \"${major_version}\" } )" +debug "${WHITE}running:$NORMAL $cmd" + +out=$(ddb <<<"$cmd") +if [[ "$out" == *"\"ok\" : 1"* ]]; then + info "Feature Compatibility set to ${major_version}. " +else + err "Failed to set feature compatibility version failed:" + echo "$out" | prefix " | " >&2 + exit 13 +fi diff --git a/mongo/hooks/mongo_database-relation-joined b/mongo/hooks/mongo_database-relation-joined index 51ab9c4..60ca301 100755 --- a/mongo/hooks/mongo_database-relation-joined +++ b/mongo/hooks/mongo_database-relation-joined @@ -17,25 +17,6 @@ function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$ ensure_db_docker_running -## ReplicaSet initialization - -cmd="rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: '$TARGET_SERVICE_NAME:27017' } ]})" -debug "${WHITE}running:$NORMAL $cmd" - -out=$(ddb < <(echo "use $DBNAME"; - echo "$cmd")) - -if [[ "$out" == *"\"codeName\" : \"AlreadyInitialized\""* ]]; then - info "ReplicaSet already initialized." -elif [[ "$out" == *"\"ok\" : 1"* ]]; then - info "ReplicaSet initialized. " -else - err "ReplicaSet initialisation failed:" - echo "$out" >&2 - exit 13 -fi - - ## Enable read if db version >= 4.2 if ! version=$(mongo:db:version); then @@ -88,19 +69,3 @@ else exit 14 fi - -major_version=${version%.*} - -## XXXvlab: why don't we do this initialisation in init ? -cmd="db.adminCommand( { setFeatureCompatibilityVersion: \"${major_version}\" } )" -debug "${WHITE}running:$NORMAL $cmd" - -out=$(ddb < <(echo "use $DBNAME"; - echo "$cmd")) -if [[ "$out" == *"\"ok\" : 1"* ]]; then - info "Feature Compatibility set to ${major_version}. " -else - err "Failed to set feature compatibieplicaSet initialisation failed:" - echo "$out" | prefix " | " >&2 - exit 13 -fi