PromucFlow_constructor/deploy/docker/utils/bin/check_replica_set.js

52 lines
1.0 KiB
JavaScript

const { MongoClient } = require("mongodb");
async function exec() {
const client = new MongoClient(process.env.APPSMITH_MONGODB_URI, {
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);
});
}
async function checkReplicaSet(client) {
await client.connect();
return await new Promise((resolve) => {
try {
client
.watch()
.on("change", (change) => console.log(change))
.on("error", () => resolve(1));
// setTimeout so the error event can kick-in first
setTimeout(() => {
resolve(0);
}, 1000);
} catch (err) {
console.log(err.stack);
resolve(1);
}
});
}
module.exports = {
exec,
};