The bug report of CDRIVER-3195 appears to be due to mishandling of OP_MSG bulk writes when we fail to write to the server socket in the middle of a batch.
result->must_stop, which was introduced in CDRIVER-1556, indicates if a bulk write should stop attempting commands due to a socket disconnect. It is checked in _mongoc_write_opquery but not checked in _mongoc_write_opmsg. So we attempt the sending next OP_MSG without having a socket.
I've reproduced on 1.13.1 and master, but I suspect this goes back to our initial OP_MSG support in 1.9.
- is depended on by
-
CDRIVER-3195 Driver aborts during bulk write
- Closed
- is related to
-
CDRIVER-3305 OP_MSG unordered bulk writes should not stop upon first error
- Closed
-
CDRIVER-3306 Do not assume non-empty server reply implies stream is still valid
- Closed
-
CDRIVER-3587 Do not reuse server stream that becomes invalid on failure to end session
- Closed