Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-660

Concurrency issue can cause corrupted messages to be sent to the server

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker - P1
    • Resolution: Fixed
    • Affects Version/s: 2.9.0, 2.9.1
    • Fix Version/s: 2.9.2, 2.10.0
    • Component/s: None
    • Labels:
    • Environment:
      Linux 3.0.0-12-server x86_64, 1.6.0_26-b03
    • Backwards Compatibility:
      Major Change
    • # Replies:
      11
    • Last comment by Customer:
      false

      Description

      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:

      1. 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).
      2. 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.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                13 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Days since reply:
                  4 years, 41 weeks, 2 days ago
                  Date of 1st Reply: