Skip to content

Commit 4c340db

Browse files
committed
Fix test failures on 8.0 sharded clusters
Advance cluster time on all session entities in unified tests to one after the initial data is created JAVA-5334
1 parent 140bdce commit 4c340db

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

driver-core/src/test/functional/com/mongodb/client/test/CollectionHelper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ public static void dropDatabase(final String name, final WriteConcern writeConce
109109
}
110110
}
111111

112+
public static BsonDocument getCurrentClusterTime() {
113+
return new CommandReadOperation<BsonDocument>("admin", new BsonDocument("ping", new BsonInt32(1)), new BsonDocumentCodec())
114+
.execute(getBinding()).getDocument("$clusterTime", null);
115+
}
116+
112117
public MongoNamespace getNamespace() {
113118
return namespace;
114119
}

driver-sync/src/test/functional/com/mongodb/client/unified/Entities.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
import com.mongodb.ReadConcernLevel;
2424
import com.mongodb.ServerApi;
2525
import com.mongodb.ServerApiVersion;
26-
import com.mongodb.internal.connection.TestClusterListener;
27-
import com.mongodb.logging.TestLoggingInterceptor;
2826
import com.mongodb.TransactionOptions;
2927
import com.mongodb.WriteConcern;
3028
import com.mongodb.assertions.Assertions;
@@ -56,11 +54,13 @@
5654
import com.mongodb.event.ConnectionPoolListener;
5755
import com.mongodb.event.ConnectionPoolReadyEvent;
5856
import com.mongodb.event.ConnectionReadyEvent;
57+
import com.mongodb.internal.connection.TestClusterListener;
5958
import com.mongodb.internal.connection.TestCommandListener;
6059
import com.mongodb.internal.connection.TestConnectionPoolListener;
6160
import com.mongodb.internal.connection.TestServerListener;
6261
import com.mongodb.internal.logging.LogMessage;
6362
import com.mongodb.lang.NonNull;
63+
import com.mongodb.logging.TestLoggingInterceptor;
6464
import org.bson.BsonArray;
6565
import org.bson.BsonBoolean;
6666
import org.bson.BsonDocument;
@@ -300,6 +300,7 @@ private <T> void putEntity(final String id, final T entity, final Map<String, T>
300300
}
301301

302302
public void init(final BsonArray entitiesArray,
303+
final BsonDocument startingClusterTime,
303304
final boolean waitForPoolAsyncWorkManagerStart,
304305
final Function<MongoClientSettings, MongoClient> mongoClientSupplier,
305306
final Function<MongoDatabase, GridFSBucket> gridFSBucketSupplier,
@@ -324,7 +325,7 @@ public void init(final BsonArray entitiesArray,
324325
break;
325326
}
326327
case "session": {
327-
initSession(entity, id);
328+
initSession(entity, id, startingClusterTime);
328329
break;
329330
}
330331
case "bucket": {
@@ -596,7 +597,7 @@ private void initCollection(final BsonDocument entity, final String id) {
596597
putEntity(id, collection, collections);
597598
}
598599

599-
private void initSession(final BsonDocument entity, final String id) {
600+
private void initSession(final BsonDocument entity, final String id, final BsonDocument startingClusterTime) {
600601
MongoClient client = clients.get(entity.getString("client").getValue());
601602
ClientSessionOptions.Builder optionsBuilder = ClientSessionOptions.builder();
602603
if (entity.containsKey("sessionOptions")) {
@@ -614,6 +615,7 @@ private void initSession(final BsonDocument entity, final String id) {
614615
}
615616
}
616617
ClientSession session = client.startSession(optionsBuilder.build());
618+
session.advanceClusterTime(startingClusterTime);
617619
putEntity(id, session, sessions);
618620
putEntity(id + "-identifier", session.getServerSession().getIdentifier(), sessionIdentifiers);
619621
}

driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import static com.mongodb.ClusterFixture.getServerVersion;
7474
import static com.mongodb.client.Fixture.getMongoClient;
7575
import static com.mongodb.client.Fixture.getMongoClientSettings;
76+
import static com.mongodb.client.test.CollectionHelper.getCurrentClusterTime;
7677
import static com.mongodb.client.unified.RunOnRequirementsMatcher.runOnRequirementsMet;
7778
import static java.util.Collections.singletonList;
7879
import static java.util.stream.Collectors.toList;
@@ -105,6 +106,7 @@ public abstract class UnifiedTest {
105106
private final UnifiedClientEncryptionHelper clientEncryptionHelper = new UnifiedClientEncryptionHelper(entities);
106107
private final List<FailPoint> failPoints = new ArrayList<>();
107108
private final UnifiedTestContext rootContext = new UnifiedTestContext();
109+
private BsonDocument startingClusterTime;
108110

109111
private class UnifiedTestContext {
110112
private final AssertionContext context = new AssertionContext();
@@ -212,12 +214,12 @@ public void setUp() {
212214
if (definition.containsKey("skipReason")) {
213215
throw new AssumptionViolatedException(definition.getString("skipReason").getValue());
214216
}
215-
entities.init(entitiesArray,
217+
startingClusterTime = addInitialData();
218+
entities.init(entitiesArray, startingClusterTime,
216219
fileDescription != null && PRESTART_POOL_ASYNC_WORK_MANAGER_FILE_DESCRIPTIONS.contains(fileDescription),
217220
this::createMongoClient,
218221
this::createGridFSBucket,
219222
this::createClientEncryption);
220-
addInitialData();
221223
}
222224

223225
@After
@@ -561,6 +563,7 @@ protected boolean terminateLoop() {
561563

562564
private OperationResult executeCreateEntities(final BsonDocument operation) {
563565
entities.init(operation.getDocument("arguments").getArray("entities"),
566+
startingClusterTime,
564567
false,
565568
this::createMongoClient,
566569
this::createGridFSBucket,
@@ -890,7 +893,7 @@ private List<CommandEvent> lastTwoCommandEvents(final TestCommandListener listen
890893
return events.subList(events.size() - 2, events.size());
891894
}
892895

893-
private void addInitialData() {
896+
private BsonDocument addInitialData() {
894897
for (BsonValue cur : initialData.getValues()) {
895898
BsonDocument curDataSet = cur.asDocument();
896899
CollectionHelper<BsonDocument> helper = new CollectionHelper<>(new BsonDocumentCodec(),
@@ -905,5 +908,6 @@ private void addInitialData() {
905908
WriteConcern.MAJORITY);
906909
}
907910
}
911+
return getCurrentClusterTime();
908912
}
909913
}

0 commit comments

Comments
 (0)