Closed zhecksum closed 4 years ago
Given that you know the exact code change necessary, any chance you would PR it? :-)
@jefferai sure thing! I'll submit a request right away!
Digged a little bit deeper into this, and it turns out that I was wrong.
MongoDB version 4.0 works as expected.
It is only version 4.2 that does not work.
The reason for this is in the MongoDB docs:
Starting in MongoDB 4.2, rs.stepDown() method no longer closes all client connections.
To support version 4.2, we will need to close the connection manually and reconnect to the new master. I am working on getting that done now.
Hi @zhecksum!
This issue has been resolved with https://github.com/hashicorp/vault/pull/8140. Closing this for now.
Cheers, Michel
Describe the bug
Mongo version 4.0+ returns a "not master" error instead of an EOF error when Vault tries to connect after a step down of the replica set primary.
/plugins/database/mongodb/mongodb.go:
case err == io.EOF, strings.Contains(err.Error(), "EOF")
:needs to be changed to
case err == io.EOF, strings.Contains(err.Error(), "EOF"), strings.Contains(err.Error(), "not master")
:to catch the "not master" error message thrown by Mongo version 4.0+.
To Reproduce Steps to reproduce the behavior:
Expected behavior
Should return credentials.
Environment:
Vault server configuration:
vault server -dev -dev-root-token-id='abc' -log-level=trace
Additional context
Great job @jefferai and @calvn on resolving previous issue, #2973. Just needs to be updated for Mongo 4+!