From 0c276b5a4f6d41b30ba49ae838bdee2e57a1a1a4 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Wed, 23 Sep 2020 08:40:35 -0300 Subject: [PATCH 1/2] Regression: Handle MongoDB authentication issues (#18993) --- app/models/server/models/_oplogHandle.ts | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/app/models/server/models/_oplogHandle.ts b/app/models/server/models/_oplogHandle.ts index 74d50bf6c23..eb0e7eba779 100644 --- a/app/models/server/models/_oplogHandle.ts +++ b/app/models/server/models/_oplogHandle.ts @@ -24,8 +24,23 @@ class OplogHandle { } const { mongo } = MongoInternals.defaultRemoteCollectionDriver(); - const { version, storageEngine } = await mongo.db.command({ serverStatus: 1 }); - return storageEngine?.name === 'wiredTiger' && semver.satisfies(semver.coerce(version) || '', '>=3.6.0'); + + try { + const { version, storageEngine } = await mongo.db.command({ serverStatus: 1 }); + + if (!storageEngine || storageEngine.name !== 'wiredTiger' || !semver.satisfies(semver.coerce(version) || '', '>=3.6.0')) { + return false; + } + + await mongo.db.admin().command({ replSetGetStatus: 1 }); + } catch (e) { + if (e.message.startsWith('not authorized')) { + console.info('Change Stream is available for your installation, give admin permissions to your database user to use this improved version.'); + } + return false; + } + + return true; } async start(): Promise { @@ -36,7 +51,7 @@ class OplogHandle { try { urlParsed = await urlParser(oplogUrl); } catch (e) { - throw Error("$MONGO_OPLOG_URL must be set to the 'local' database of a Mongo replica set"); + throw Error(`Error parsing database URL (${ oplogUrl })`); } if (!this.usingChangeStream && (!oplogUrl || urlParsed.dbName !== 'local')) { @@ -164,9 +179,7 @@ let oplogHandle: Promise; // @ts-ignore // eslint-disable-next-line no-undef if (Package['disable-oplog']) { - const { mongo } = MongoInternals.defaultRemoteCollectionDriver(); try { - Promise.await(mongo.db.admin().command({ replSetGetStatus: 1 })); oplogHandle = Promise.await(new OplogHandle().start()); } catch (e) { console.error(e.message); From 54ca5782f4e16824b14d375f0527ebd574282bb9 Mon Sep 17 00:00:00 2001 From: pierre-lehnen-rc <55164754+pierre-lehnen-rc@users.noreply.github.com> Date: Wed, 23 Sep 2020 08:57:57 -0300 Subject: [PATCH 2/2] [FIX] LDAP avatar upload (#18994) --- app/ldap/server/sync.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/ldap/server/sync.js b/app/ldap/server/sync.js index 7d6dc753fa4..0c3db0eca37 100644 --- a/app/ldap/server/sync.js +++ b/app/ldap/server/sync.js @@ -358,6 +358,7 @@ function syncUserAvatar(user, ldapUser) { const file = { userId: user._id, type: 'image/jpeg', + size: avatar.length, }; Meteor.runAsUser(user._id, () => {