Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 99b9e43

Browse files
authored
Fix AbstractWriteSearchIndexOperation executeAsync releasing connections (#1812)
Update SyncMongoClient to assert connections are released Ensure errors thrown outside of the callback also release the resource in AsyncOperationHelper JAVA-5972
1 parent efe40ab commit 99b9e43

File tree

36 files changed

+110
-58
lines changed

36 files changed

+110
-58
lines changed

‎driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ public void executeAsync(final AsyncWriteBinding binding, final SingleResultCall
6666
writeConcernErrorTransformerAsync(binding.getOperationContext().getTimeoutContext()), (result, commandExecutionError) -> {
6767
try {
6868
swallowOrThrow(commandExecutionError);
69-
callback.onResult(result, null);
69+
cb.onResult(result, null);
7070
} catch (Throwable mongoCommandException) {
71-
callback.onResult(null, mongoCommandException);
71+
cb.onResult(null, mongoCommandException);
7272
}
7373
}
7474
)

‎driver-core/src/main/com/mongodb/internal/operation/AsyncOperationHelper.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ static <R, T extends ReferenceCounted> void withAsyncSuppliedResource(final Asyn
138138
AsyncCallbackSupplier<R> curriedFunction = c -> function.apply(resource, c);
139139
curriedFunction.whenComplete(resource::release).get(errorHandlingCallback);
140140
} catch (Exception e) {
141+
if (resource.getCount() > 0) {
142+
resource.release();
143+
}
141144
errorHandlingCallback.onResult(null, e);
142145
}
143146
}

‎driver-reactive-streams/src/test/functional/com/mongodb/internal/connection/OidcAuthenticationAsyncProseTests.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class OidcAuthenticationAsyncProseTests extends OidcAuthenticationProseTe
3333

3434
@Override
3535
protected MongoClient createMongoClient(final MongoClientSettings settings) {
36-
return new SyncMongoClient(MongoClients.create(settings));
36+
return new SyncMongoClient(settings);
3737
}
3838

3939
@Test

‎driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/AbstractClientMetadataProseTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
class ClientMetadataProseTest extends AbstractClientMetadataProseTest {
3030

3131
protected MongoClient createMongoClient(@Nullable final MongoDriverInformation mongoDriverInformation, final MongoClientSettings mongoClientSettings) {
32-
return new SyncMongoClient(MongoClients.create(mongoClientSettings, mongoDriverInformation));
32+
return new SyncMongoClient(mongoClientSettings, mongoDriverInformation);
3333
}
3434
}

‎driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/AsyncTransportSettingsTest.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void testAsyncTransportSettings() {
4848
.transportSettings(asyncTransportSettings)
4949
.build();
5050

51-
try (MongoClient client = new SyncMongoClient(MongoClients.create(mongoClientSettings))) {
51+
try (MongoClient client = new SyncMongoClient(mongoClientSettings)) {
5252
client.listDatabases().first();
5353
}
5454
verify(executorService, atLeastOnce()).execute(any());
@@ -67,7 +67,7 @@ void testExternalExecutorWasShutDown(final boolean tlsEnabled) throws Interrupte
6767
.transportSettings(asyncTransportSettings)
6868
.build();
6969

70-
try (MongoClient ignored = new SyncMongoClient(MongoClients.create(mongoClientSettings))) {
70+
try (MongoClient ignored = new SyncMongoClient(mongoClientSettings)) {
7171
// ignored
7272
}
7373

‎driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/AtlasSearchIndexManagementProseTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@
2727
*/
2828
public class AtlasSearchIndexManagementProseTest extends AbstractAtlasSearchIndexManagementProseTest {
2929
protected MongoClient createMongoClient(final MongoClientSettings settings) {
30-
return new SyncMongoClient(MongoClients.create(settings));
30+
return new SyncMongoClient(settings);
3131
}
3232
}

‎driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/ClientEncryptionDataKeyAndDoubleEncryptionTest.java‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void setUp() {
7373

7474
// Step 1: create unencrypted client
7575
commandListener = new TestCommandListener();
76-
client = new SyncMongoClient(MongoClients.create(getMongoClientSettingsBuilder().addCommandListener(commandListener).build()));
76+
client = new SyncMongoClient(getMongoClientSettingsBuilder().addCommandListener(commandListener));
7777
client.getDatabase("keyvault").getCollection("datakeys").drop();
7878
client.getDatabase("db").getCollection("coll").drop();
7979

@@ -114,12 +114,11 @@ public void setUp() {
114114
}};
115115

116116
String keyVaultNamespace = "keyvault.datakeys";
117-
clientEncrypted = new SyncMongoClient(MongoClients.create(getMongoClientSettingsBuilder()
117+
clientEncrypted = new SyncMongoClient(getMongoClientSettingsBuilder()
118118
.autoEncryptionSettings(AutoEncryptionSettings.builder()
119119
.keyVaultNamespace(keyVaultNamespace)
120120
.kmsProviders(kmsProviders)
121121
.schemaMap(schemaMap)
122-
.build())
123122
.build()));
124123

125124
clientEncryption = ClientEncryptions.create(

‎driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/ClientEncryptionRewrapManyDataKeyProseTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class ClientEncryptionRewrapManyDataKeyProseTest extends AbstractClientEn
2828

2929
@Override
3030
protected MongoClient createMongoClient(final MongoClientSettings settings) {
31-
return new SyncMongoClient(MongoClients.create(settings));
31+
return new SyncMongoClient(settings);
3232
}
3333

3434
@Override

‎driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/ClientEncryptionTextExplicitEncryptionTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
public class ClientEncryptionTextExplicitEncryptionTest extends AbstractClientEncryptionTextExplicitEncryptionTest {
2929
@Override
3030
protected MongoClient createMongoClient(final MongoClientSettings settings) {
31-
return new SyncMongoClient(MongoClients.create(settings));
31+
return new SyncMongoClient(settings);
3232
}
3333

3434
@Override

‎driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/ClientSideEncryption25LookupProseTests.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class ClientSideEncryption25LookupProseTests extends com.mongodb.client.C
2828

2929
@Override
3030
protected MongoClient createMongoClient(final MongoClientSettings settings) {
31-
return new SyncMongoClient(MongoClients.create(settings));
31+
return new SyncMongoClient(settings);
3232
}
3333

3434
@Override

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /