The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Rocket.Chat/app/utils/server/functions/getMongoInfo.js

51 lines
1.8 KiB

import { MongoInternals } from 'meteor/mongo';
function fallbackMongoInfo() {
let mongoVersion;
let mongoStorageEngine;
const { mongo } = MongoInternals.defaultRemoteCollectionDriver();
const oplogEnabled = Boolean(mongo._oplogHandle && mongo._oplogHandle.onOplogEntry);
try {
const { version } = Promise.await(mongo.db.command({ buildinfo: 1 }));
mongoVersion = version;
mongoStorageEngine = 'unknown';
} catch (e) {
console.error('=== Error getting MongoDB info ===');
console.error(e && e.toString());
console.error('----------------------------------');
console.error('Without mongodb version we can\'t ensure you are running a compatible version.');
console.error('If you are running your mongodb with auth enabled and an user different from admin');
console.error('you may need to grant permissions for this user to check cluster data.');
console.error('You can do it via mongo shell running the following command replacing');
console.error('the string YOUR_USER by the correct user\'s name:');
console.error('');
console.error(' db.runCommand({ grantRolesToUser: "YOUR_USER" , roles: [{role: "clusterMonitor", db: "admin"}]})');
console.error('');
console.error('==================================');
}
return { oplogEnabled, mongoVersion, mongoStorageEngine };
}
export function getMongoInfo() {
let mongoVersion;
let mongoStorageEngine;
const { mongo } = MongoInternals.defaultRemoteCollectionDriver();
const oplogEnabled = Boolean(mongo._oplogHandle && mongo._oplogHandle.onOplogEntry);
try {
const { version, storageEngine } = Promise.await(mongo.db.command({ serverStatus: 1 }));
mongoVersion = version;
mongoStorageEngine = storageEngine.name;
} catch (e) {
return fallbackMongoInfo();
}
return { oplogEnabled, mongoVersion, mongoStorageEngine };
}