Skip to content

Commit 81cc1a7

Browse files
committed
Add top-level error labels to write concern error (#766)
This will allow the driver to properly retry writes that the server has labeled as a RetryableWriteError. JAVA-4244
1 parent c3c0a2c commit 81cc1a7

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,14 @@ public static MongoException createSpecialException(final BsonDocument response,
243243
} else if (errorMessage.contains("not master") || NOT_MASTER_CODES.contains(errorCode)) {
244244
return new MongoNotPrimaryException(response, serverAddress);
245245
} else if (response.containsKey("writeConcernError")) {
246-
return createSpecialException(response.getDocument("writeConcernError"), serverAddress, "errmsg");
246+
MongoException writeConcernException = createSpecialException(response.getDocument("writeConcernError"), serverAddress,
247+
"errmsg");
248+
if (writeConcernException != null && response.isArray("errorLabels")) {
249+
for (BsonValue errorLabel : response.getArray("errorLabels")) {
250+
writeConcernException.addLabel(errorLabel.asString().getValue());
251+
}
252+
}
253+
return writeConcernException;
247254
} else {
248255
return null;
249256
}

0 commit comments

Comments
 (0)