Skip to content

Commit cc90a51

Browse files
authored
Ensure exception propagation in async try-catch block. (#1466)
JAVA-5558
1 parent f3b42eb commit cc90a51

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

driver-core/src/main/com/mongodb/internal/connection/InternalStreamConnection.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,12 @@ public void sendMessageAsync(
689689
}).thenRunTryCatchAsyncBlocks(c -> {
690690
stream.writeAsync(byteBuffers, operationContext, c.asHandler());
691691
}, Exception.class, (e, c) -> {
692-
close();
693-
throwTranslatedWriteException(e, operationContext);
692+
try {
693+
close();
694+
throwTranslatedWriteException(e, operationContext);
695+
} catch (Throwable translatedException) {
696+
c.completeExceptionally(translatedException);
697+
}
694698
}).finish(errorHandlingCallback(callback, LOGGER));
695699
}
696700

driver-core/src/test/unit/com/mongodb/internal/connection/InternalStreamConnectionSpecification.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1219,7 +1219,7 @@ class InternalStreamConnectionSpecification extends Specification {
12191219
try {
12201220
rcvdCallbck.get()
12211221
false
1222-
} catch (MongoSocketWriteException) {
1222+
} catch (MongoSocketWriteException e) {
12231223
true
12241224
}
12251225
}

0 commit comments

Comments
 (0)