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 if appsmithctl check_replica_set; then
echo "Mongodb cloud Replica Set is enabled" echo "Mongodb cloud Replica Set is enabled"
mongo "$APPSMITH_MONGODB_URI" --eval 'rs.initiate()'
else else
echo -e "\033[0;31m********************************************************************\033[0m" echo -e "\033[0;31m********************************************************************\033[0m"
echo -e "\033[0;31m* MongoDB Replica Set is not enabled *\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, useNewUrlParser: true,
useUnifiedTopology: true, useUnifiedTopology: true,
}); });
checkReplicaSet(client)
.then((res) => { let isReplicaSetEnabled = false;
// support replica set
if (res === 0) { try {
isReplicaSetEnabled = await checkReplicaSet(client);
} catch (err) {
console.error("Error trying to check replicaset", err);
} finally {
client.close(); client.close();
process.exit(0);
} }
// not support replica set process.exit(isReplicaSetEnabled ? 0 : 1);
if (res === 1) {
client.close();
process.exit(1);
}
})
.catch((err) => {
// exit 1 for any other error
client.close();
process.exit(1);
});
} }
async function checkReplicaSet(client) { async function checkReplicaSet(client) {
@ -31,17 +24,22 @@ async function checkReplicaSet(client) {
return await new Promise((resolve) => { return await new Promise((resolve) => {
try { try {
client client
.db()
.collection("user")
.watch() .watch()
.on("change", (change) => console.log(change)) .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 so the error event can kick-in first
setTimeout(() => { setTimeout(() => {
resolve(0); resolve(true);
}, 1000); }, 1000);
} catch (err) { } catch (err) {
console.log(err.stack); console.error("Error thrown when checking replicaset", err);
resolve(1); resolve(false);
} }
}); });
} }