Fix replicaset checking with limited permissions (#11969)

This commit is contained in:
Shrikant Sharat Kandula 2022-03-21 13:47:29 +05:30 committed by GitHub
parent 1d916e1c3c
commit b7884f1feb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 23 deletions

View File

@ -129,7 +129,6 @@ init_replica_set() {
if appsmithctl check_replica_set; then
echo "Mongodb cloud Replica Set is enabled"
mongo "$APPSMITH_MONGODB_URI" --eval 'rs.initiate()'
else
echo -e "\033[0;31m********************************************************************\033[0m"
echo -e "\033[0;31m* MongoDB Replica Set is not enabled *\033[0m"

View File

@ -5,25 +5,18 @@ async function exec() {
useNewUrlParser: true,
useUnifiedTopology: true,
});
checkReplicaSet(client)
.then((res) => {
// support replica set
if (res === 0) {
client.close();
process.exit(0);
}
// not support replica set
if (res === 1) {
client.close();
process.exit(1);
}
})
.catch((err) => {
// exit 1 for any other error
client.close();
process.exit(1);
});
let isReplicaSetEnabled = false;
try {
isReplicaSetEnabled = await checkReplicaSet(client);
} catch (err) {
console.error("Error trying to check replicaset", err);
} finally {
client.close();
}
process.exit(isReplicaSetEnabled ? 0 : 1);
}
async function checkReplicaSet(client) {
@ -31,17 +24,22 @@ async function checkReplicaSet(client) {
return await new Promise((resolve) => {
try {
client
.db()
.collection("user")
.watch()
.on("change", (change) => console.log(change))
.on("error", () => resolve(1));
.on("error", (err) => {
console.error("Error even from changeStream", err);
resolve(false);
});
// setTimeout so the error event can kick-in first
setTimeout(() => {
resolve(0);
resolve(true);
}, 1000);
} catch (err) {
console.log(err.stack);
resolve(1);
console.error("Error thrown when checking replicaset", err);
resolve(false);
}
});
}