Ackee
Ackee copied to clipboard
Error when using MongoDB URL with replicas
🐞 Describe the bug
i'm using my default connection to my replicated instance of mongo db. The url is:
mongodb://USERNAME:PASSWORD@MONGO1_URL:27017,MONGO2_URL:27017,MONGO3_URL:27017/ackee?authSource=admin&authMechanism=SCRAM-SHA-1
with MONGO1_URL, MONGO2_URL, MONGO3_URL fql names of the mongodb servers (that is currently used from many apps as mongodb uri),
but when the container start, it crash with:
TypeError [ERR_INVALID_URL]: Invalid URL: ........
and the error shows the desidered uri
it seems a valid url, accepted from mongodb spec, what is wrong? it seems an issue
the mongodb spec is:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
seems that if use the same URI removing ports it works, so:
mongodb://USERNAME:PASSWORD@MONGO1_URL,MONGO2_URL,MONGO3_URL/ackee?authSource=admin&authMechanism=SCRAM-SHA-1
instead of
mongodb://USERNAME:PASSWORD@MONGO1_URL:27017,MONGO2_URL:27017,MONGO3_URL:27017/ackee?authSource=admin&authMechanism=SCRAM-SHA-1
but the ports are allowed on mongodb specs, so it remain a bug
Found the problem. Ackee passes the URL to mongoose.connect
so it theoretically supports this type of URL, but there's a stripUrlAuth
function that removes the username and password from the URL before logging it to the console and this function can't deal with multiple URLs. See https://github.com/electerious/Ackee/blob/master/src/index.js#L19
A PR is welcome!