The 2.9.0 version of the driver introduced a regression which can cause corrupted wire protocol messages to be sent to the server.
In practice, the impact of the bug is mitigated by these circumstances:
- Occurs when connected to a replica set or multiple mongos using the new HA support for mongos (but not a single mongos or a standalone).
- It's triggered only if the driver gets an IOException while performing a normal query (not commands) and attempts to retry the query.
If both of these occur, it becomes likely that the driver will send corrupted messages to the server, and keep sending them until the application is restarted.
The affect of sending corrupted messages to the server is undefined. In some cases, the server will assert and send back an error. In others, it will crash. And in others, it will add corrupt documents to the database. Using --objcheck can mitigate the latter case, but not fully.