Skip to content

Commit 07da4e8

Browse files
committed
Fix com.mongodb.client.FailPoint.enable
Given the `FailPoint` API, when `enable` completes abruptly, it must not be case that the fail point is left enabled.
1 parent 8731b19 commit 07da4e8

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,22 @@ public static FailPoint enable(final BsonDocument configureFailPointDoc, final S
4848
.hosts(Collections.singletonList(serverAddress)))
4949
.build();
5050
MongoClient client = MongoClients.create(clientSettings);
51-
return enable(configureFailPointDoc, client);
51+
RuntimeException enableException = null;
52+
try {
53+
return enable(configureFailPointDoc, client);
54+
} catch (RuntimeException e) {
55+
enableException = e;
56+
throw e;
57+
} finally {
58+
if (enableException != null) {
59+
try {
60+
disableAndClose(configureFailPointDoc, client);
61+
} catch (RuntimeException closeException) {
62+
enableException.addSuppressed(closeException);
63+
}
64+
}
65+
}
66+
5267
}
5368

5469
private static FailPoint enable(final BsonDocument configureFailPointDoc, final MongoClient client) {
@@ -59,6 +74,10 @@ private static FailPoint enable(final BsonDocument configureFailPointDoc, final
5974

6075
@Override
6176
public void close() {
77+
disableAndClose(failPointDocument, client);
78+
}
79+
80+
private static void disableAndClose(final BsonDocument failPointDocument, final MongoClient client) {
6281
try {
6382
client.getDatabase("admin").runCommand(new BsonDocument()
6483
.append("configureFailPoint", failPointDocument.getString("configureFailPoint"))

0 commit comments

Comments
 (0)