Skip to content

Commit 9a925e1

Browse files
committed
Reduce flakiness in CSOT tests using withTransaction, by forcing an immediate retry without backoff.
1 parent e59c4cb commit 9a925e1

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,11 @@
4747
import com.mongodb.event.ConnectionClosedEvent;
4848
import com.mongodb.event.ConnectionCreatedEvent;
4949
import com.mongodb.event.ConnectionReadyEvent;
50-
51-
import static com.mongodb.internal.connection.CommandHelper.HELLO;
52-
import static com.mongodb.internal.connection.CommandHelper.LEGACY_HELLO;
53-
5450
import com.mongodb.internal.connection.InternalStreamConnection;
5551
import com.mongodb.internal.connection.ServerHelper;
5652
import com.mongodb.internal.connection.TestCommandListener;
5753
import com.mongodb.internal.connection.TestConnectionPoolListener;
54+
import com.mongodb.internal.time.ExponentialBackoff;
5855
import com.mongodb.test.FlakyTest;
5956
import org.bson.BsonDocument;
6057
import org.bson.BsonInt32;
@@ -90,6 +87,8 @@
9087
import static com.mongodb.ClusterFixture.sleep;
9188
import static com.mongodb.client.Fixture.getDefaultDatabaseName;
9289
import static com.mongodb.client.Fixture.getPrimary;
90+
import static com.mongodb.internal.connection.CommandHelper.HELLO;
91+
import static com.mongodb.internal.connection.CommandHelper.LEGACY_HELLO;
9392
import static java.lang.Long.MAX_VALUE;
9493
import static java.lang.String.join;
9594
import static java.util.Arrays.asList;
@@ -1121,6 +1120,11 @@ public void setUp() {
11211120
filesCollectionHelper = new CollectionHelper<>(new BsonDocumentCodec(), gridFsFileNamespace);
11221121
chunksCollectionHelper = new CollectionHelper<>(new BsonDocumentCodec(), gridFsChunksNamespace);
11231122
commandListener = new TestCommandListener();
1123+
1124+
// setting jitter to 0 to make test using withTransaction deterministic (i.e retries immediately) otherwise we might get
1125+
// MongoCommandException setup in the failpoint instead of MongoOperationTimeoutException depending on the random jitter value.
1126+
ExponentialBackoff.setTestJitterSupplier(() -> 1.0);
1127+
11241128
}
11251129

11261130
@AfterEach
@@ -1146,6 +1150,8 @@ public void tearDown() throws InterruptedException {
11461150
//noinspection ResultOfMethodCallIgnored
11471151
executor.awaitTermination(MAX_VALUE, NANOSECONDS);
11481152
}
1153+
1154+
ExponentialBackoff.clearTestJitterSupplier();
11491155
}
11501156

11511157
@AfterAll

0 commit comments

Comments
 (0)