| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- diff --git a/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs b/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
- index 29f5e7ffd26..46be91a1d9c 100644
- --- a/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
- +++ b/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
- @@ -9,6 +9,34 @@ const { ObjectId } = mongodb
- const MIN_MONGO_VERSION = [6, 0]
- const MIN_MONGO_FEATURE_COMPATIBILITY_VERSION = [6, 0]
-
- +// Allow ignoring admin check failures via an environment variable
- +const OVERRIDE_ENV_VAR_NAME = 'ALLOW_MONGO_ADMIN_CHECK_FAILURES'
- +
- +function shouldSkipAdminChecks() {
- + return process.env[OVERRIDE_ENV_VAR_NAME] === 'true'
- +}
- +
- +function handleUnauthorizedError(err, feature) {
- + if (
- + err instanceof mongodb.MongoServerError &&
- + err.codeName === 'Unauthorized'
- + ) {
- + console.warn(`Warning: failed to check ${feature} (not authorised)`)
- + if (!shouldSkipAdminChecks()) {
- + console.error(
- + `Please ensure the MongoDB user has the required admin permissions, or\n` +
- + `set the environment variable ${OVERRIDE_ENV_VAR_NAME}=true to ignore this check.`
- + )
- + process.exit(1)
- + }
- + console.warn(
- + `Ignoring ${feature} check failure (${OVERRIDE_ENV_VAR_NAME}=${process.env[OVERRIDE_ENV_VAR_NAME]})`
- + )
- + } else {
- + throw err
- + }
- +}
- +
- async function main() {
- let mongoClient
- try {
- @@ -18,8 +46,16 @@ async function main() {
- throw err
- }
-
- - await checkMongoVersion(mongoClient)
- - await checkFeatureCompatibilityVersion(mongoClient)
- + try {
- + await checkMongoVersion(mongoClient)
- + } catch (err) {
- + handleUnauthorizedError(err, 'MongoDB version')
- + }
- + try {
- + await checkFeatureCompatibilityVersion(mongoClient)
- + } catch (err) {
- + handleUnauthorizedError(err, 'MongoDB feature compatibility version')
- + }
-
- try {
- await testTransactions(mongoClient)
|