Skip to content

Commit 2f316c7

Browse files
committed
CSHARP-654: fixed bug for when network reliability causes us to miss a reconnection by one of the members.
1 parent c2f17f1 commit 2f316c7

File tree

3 files changed

+17
-34
lines changed

3 files changed

+17
-34
lines changed

MongoDB.Driver/Communication/Proxies/MultipleInstanceMongoServerProxy.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,6 @@ protected void EnsureInstanceWithAddress(MongoServerAddress address)
345345
AddInstance(instance);
346346
if (_state != MongoServerState.Disconnecting && _state != MongoServerState.Disconnected)
347347
{
348-
_state = MongoServerState.Connecting;
349348
ConnectInstance(instance);
350349
}
351350
}

MongoDB.Driver/Communication/Proxies/ReplicaSetMongoServerProxy.cs

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -126,40 +126,32 @@ protected override MongoServerState DetermineServerState(MongoServerState curren
126126

127127
// the order of the tests is significant
128128
// and resolves ambiguities when more than one state might match
129-
if (currentState == MongoServerState.Disconnecting)
129+
if (currentState == MongoServerState.Disconnected)
130+
{
131+
return MongoServerState.Disconnected;
132+
}
133+
else if (currentState == MongoServerState.Disconnecting)
130134
{
131135
if (instances.All(i => i.State == MongoServerState.Disconnected))
132136
{
133137
return MongoServerState.Disconnected;
134138
}
139+
140+
return MongoServerState.Disconnecting;
135141
}
136142
else
137143
{
138-
if (instances.All(i => i.State == MongoServerState.Disconnected))
139-
{
140-
return MongoServerState.Disconnected;
141-
}
142-
else if (instances.All(i => i.State == MongoServerState.Connected))
144+
if (instances.All(i => i.State == MongoServerState.Connected))
143145
{
144146
return MongoServerState.Connected;
145147
}
146-
else if (instances.Any(i => i.State == MongoServerState.Connecting))
147-
{
148-
return MongoServerState.Connecting;
149-
}
150-
else if (instances.Any(i => i.State == MongoServerState.Unknown))
151-
{
152-
return MongoServerState.Unknown;
153-
}
154148
else if (instances.Any(i => i.State == MongoServerState.Connected))
155149
{
156150
return MongoServerState.ConnectedToSubset;
157151
}
158152

159-
throw new MongoInternalException("Unexpected server instance states.");
153+
return MongoServerState.Connecting;
160154
}
161-
162-
return currentState;
163155
}
164156

165157
/// <summary>

MongoDB.Driver/Communication/Proxies/ShardedMongoServerProxy.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,36 +95,28 @@ protected override MongoServerState DetermineServerState(MongoServerState curren
9595

9696
// the order of the tests is significant
9797
// and resolves ambiguities when more than one state might match
98-
if (currentState == MongoServerState.Disconnecting)
98+
if (currentState == MongoServerState.Disconnected)
99+
{
100+
return MongoServerState.Disconnected;
101+
}
102+
else if (currentState == MongoServerState.Disconnecting)
99103
{
100104
if (instances.All(i => i.State == MongoServerState.Disconnected))
101105
{
102106
return MongoServerState.Disconnected;
103107
}
108+
109+
return MongoServerState.Disconnecting;
104110
}
105111
else
106112
{
107113
if (instances.Any(i => i.State == MongoServerState.Connected))
108114
{
109115
return MongoServerState.Connected;
110116
}
111-
else if (instances.All(i => i.State == MongoServerState.Disconnected))
112-
{
113-
return MongoServerState.Disconnected;
114-
}
115-
else if (instances.All(i => i.State == MongoServerState.Connecting))
116-
{
117-
return MongoServerState.Connecting;
118-
}
119-
else if (instances.Any(i => i.State == MongoServerState.Unknown))
120-
{
121-
return MongoServerState.Unknown;
122-
}
123117

124-
throw new MongoInternalException("Unexpected server instance states.");
118+
return MongoServerState.Connecting;
125119
}
126-
127-
return currentState;
128120
}
129121

130122
/// <summary>

0 commit comments

Comments
 (0)