Skip to content

Commit 1837e64

Browse files
authored
CSHARP-4979: Gossip cluster time from internal MongoClient to session entities (#1300)
1 parent 0f738fd commit 1837e64

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

tests/MongoDB.Driver.Tests/UnifiedTestOperations/UnifiedEntityMap.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,19 @@ public Dictionary<string, ClusterDescription> TopologyDescription
281281
}
282282

283283
// public methods
284+
public void AdjustSessionsClusterTime(BsonDocument clusterTime)
285+
{
286+
if (clusterTime == null)
287+
{
288+
return;
289+
}
290+
291+
foreach (var session in _sessions.Values)
292+
{
293+
session.WrappedCoreSession.AdvanceClusterTime(clusterTime);
294+
}
295+
}
296+
284297
public void Dispose()
285298
{
286299
if (!_disposed)

tests/MongoDB.Driver.Tests/UnifiedTestOperations/UnifiedTestRunner.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public void Run(
134134

135135
if (initialData != null)
136136
{
137-
AddInitialData(DriverTestConfiguration.Client, initialData);
137+
AddInitialData(DriverTestConfiguration.Client, initialData, _entityMap);
138138
}
139139

140140
foreach (var operation in operations)
@@ -185,7 +185,7 @@ public void Dispose()
185185
}
186186

187187
// private methods
188-
private void AddInitialData(IMongoClient client, BsonArray initialData)
188+
private void AddInitialData(IMongoClient client, BsonArray initialData, UnifiedEntityMap entityMap)
189189
{
190190
var mongoCollectionSettings = new MongoCollectionSettings();
191191
#pragma warning disable CS0618 // Type or member is obsolete
@@ -195,6 +195,7 @@ private void AddInitialData(IMongoClient client, BsonArray initialData)
195195
}
196196
#pragma warning restore CS0618 // Type or member is obsolete
197197

198+
BsonDocument serverTime = null;
198199
foreach (var dataItem in initialData)
199200
{
200201
var collectionName = dataItem["collectionName"].AsString;
@@ -209,15 +210,20 @@ private void AddInitialData(IMongoClient client, BsonArray initialData)
209210
_logger.LogDebug("Dropping {0}", collectionName);
210211

211212
database.DropCollection(collectionName);
213+
var session = client.StartSession();
212214
if (documents.Any())
213215
{
214-
collection.InsertMany(documents);
216+
collection.InsertMany(session, documents);
215217
}
216218
else
217219
{
218-
database.WithWriteConcern(WriteConcern.WMajority).CreateCollection(collectionName);
220+
database.WithWriteConcern(WriteConcern.WMajority).CreateCollection(session, collectionName);
219221
}
222+
223+
serverTime = session.ClusterTime;
220224
}
225+
226+
entityMap.AdjustSessionsClusterTime(serverTime);
221227
}
222228

223229
private void AssertEvents(BsonArray eventItems, UnifiedEntityMap entityMap)

0 commit comments

Comments
 (0)