Hi Gustavo,
I know this has been discussed in some previous posts, and I did some digging, but I just want to make sure I understand the driver behavior correctly.
First and foremost, let's say I have a replica set with 3 members:
* primary P1
* secondary S1
* secondary S2
What would the behavior be if say, S2 is currently down and has been removed from the replica set and we create the following session:
session, err := mgo.Dial("mongodb://P1:27017,S1:27017,S2:27017/mydatabase")
One thing I noticed, as I'm trying to upgrade my mongo nodes, in my production app: I took one of the secondaries offline, and removed it from the replica set on the primary by issuing rs.remove('S2'). This seemed to have caused a replica set re-configuration, and my production app started to return EOF for all requests to the current session.
My understanding from reading other posts on this forum, is that this could get fixed dynamically if we simply do a session.Refresh() -- is that true? We are using
session.SetMode(mgo.Strong, true)