Skip to content

Commit

Permalink
Fix test failures on 8.0 sharded clusters (#1319)
Browse files Browse the repository at this point in the history
Advance cluster time on all session entities in unified tests to one after the initial data is created

JAVA-5334
  • Loading branch information
jyemin committed Mar 12, 2024
1 parent 2ef2bf9 commit 375bbd6
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ public static void dropDatabase(final String name, final WriteConcern writeConce
}
}

public static BsonDocument getCurrentClusterTime() {
return new CommandReadOperation<BsonDocument>("admin", new BsonDocument("ping", new BsonInt32(1)), new BsonDocumentCodec())
.execute(getBinding()).getDocument("$clusterTime", null);
}

public MongoNamespace getNamespace() {
return namespace;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import com.mongodb.ReadConcernLevel;
import com.mongodb.ServerApi;
import com.mongodb.ServerApiVersion;
import com.mongodb.logging.TestLoggingInterceptor;
import com.mongodb.TransactionOptions;
import com.mongodb.WriteConcern;
import com.mongodb.assertions.Assertions;
Expand Down Expand Up @@ -60,6 +59,7 @@
import com.mongodb.internal.connection.TestServerListener;
import com.mongodb.internal.logging.LogMessage;
import com.mongodb.lang.NonNull;
import com.mongodb.logging.TestLoggingInterceptor;
import org.bson.BsonArray;
import org.bson.BsonBoolean;
import org.bson.BsonDocument;
Expand Down Expand Up @@ -294,6 +294,7 @@ private <T> void putEntity(final String id, final T entity, final Map<String, T>
}

public void init(final BsonArray entitiesArray,
final BsonDocument startingClusterTime,
final boolean waitForPoolAsyncWorkManagerStart,
final Function<MongoClientSettings, MongoClient> mongoClientSupplier,
final Function<MongoDatabase, GridFSBucket> gridFSBucketSupplier,
Expand All @@ -318,7 +319,7 @@ public void init(final BsonArray entitiesArray,
break;
}
case "session": {
initSession(entity, id);
initSession(entity, id, startingClusterTime);
break;
}
case "bucket": {
Expand Down Expand Up @@ -586,7 +587,7 @@ private void initCollection(final BsonDocument entity, final String id) {
putEntity(id, collection, collections);
}

private void initSession(final BsonDocument entity, final String id) {
private void initSession(final BsonDocument entity, final String id, final BsonDocument startingClusterTime) {
MongoClient client = clients.get(entity.getString("client").getValue());
ClientSessionOptions.Builder optionsBuilder = ClientSessionOptions.builder();
if (entity.containsKey("sessionOptions")) {
Expand All @@ -604,6 +605,7 @@ private void initSession(final BsonDocument entity, final String id) {
}
}
ClientSession session = client.startSession(optionsBuilder.build());
session.advanceClusterTime(startingClusterTime);
putEntity(id, session, sessions);
putEntity(id + "-identifier", session.getServerSession().getIdentifier(), sessionIdentifiers);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
import static com.mongodb.ClusterFixture.getServerVersion;
import static com.mongodb.client.Fixture.getMongoClient;
import static com.mongodb.client.Fixture.getMongoClientSettings;
import static com.mongodb.client.test.CollectionHelper.getCurrentClusterTime;
import static com.mongodb.client.unified.RunOnRequirementsMatcher.runOnRequirementsMet;
import static java.util.stream.Collectors.toList;
import static org.junit.Assert.assertEquals;
Expand Down Expand Up @@ -102,6 +103,7 @@ public abstract class UnifiedTest {
private final UnifiedClientEncryptionHelper clientEncryptionHelper = new UnifiedClientEncryptionHelper(entities);
private final List<FailPoint> failPoints = new ArrayList<>();
private final UnifiedTestContext rootContext = new UnifiedTestContext();
private BsonDocument startingClusterTime;

private class UnifiedTestContext {
private final AssertionContext context = new AssertionContext();
Expand Down Expand Up @@ -209,12 +211,12 @@ public void setUp() {
if (definition.containsKey("skipReason")) {
throw new AssumptionViolatedException(definition.getString("skipReason").getValue());
}
entities.init(entitiesArray,
startingClusterTime = addInitialDataAndGetClusterTime();
entities.init(entitiesArray, startingClusterTime,
fileDescription != null && PRESTART_POOL_ASYNC_WORK_MANAGER_FILE_DESCRIPTIONS.contains(fileDescription),
this::createMongoClient,
this::createGridFSBucket,
this::createClientEncryption);
addInitialData();
}

@After
Expand Down Expand Up @@ -550,6 +552,7 @@ protected boolean terminateLoop() {

private OperationResult executeCreateEntities(final BsonDocument operation) {
entities.init(operation.getDocument("arguments").getArray("entities"),
startingClusterTime,
false,
this::createMongoClient,
this::createGridFSBucket,
Expand Down Expand Up @@ -871,7 +874,7 @@ private List<CommandEvent> lastTwoCommandEvents(final TestCommandListener listen
return events.subList(events.size() - 2, events.size());
}

private void addInitialData() {
private BsonDocument addInitialDataAndGetClusterTime() {
for (BsonValue cur : initialData.getValues()) {
BsonDocument curDataSet = cur.asDocument();
CollectionHelper<BsonDocument> helper = new CollectionHelper<>(new BsonDocumentCodec(),
Expand All @@ -886,5 +889,6 @@ private void addInitialData() {
WriteConcern.MAJORITY);
}
}
return getCurrentClusterTime();
}
}

0 comments on commit 375bbd6

Please sign in to comment.