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

Drivers should only talk to servers with overlapping wire versions

    • Type: Icon: New Feature New Feature
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 2.12.0, 3.0.0
    • Affects Version/s: None
    • Component/s: Cluster Management
    • Labels:
      None

      A server is considered to be incompatible with a driver if its min and max wire version does not overlap the driver’s. Specifically, a driver with a min and max range of [a, b] must be considered incompatible with any server with a min and max range of [c, d] where c > b or d < a. All other servers are considered to be compatible.

      A driver is considered to be connected to a server if it has received an ok response to the most recent isMaster command sent to that server. Since wire version is determined by the isMaster reply, then by definition an unconnected server has an undetermined wire version range.

      When any of the connected servers are incompatible, the driver must throw an exception for all operations (CRUD, commands) initiated through its API. Conversely, drivers must allow all operations when all of the connected servers are compatible. Note that this compatiblility may change over time as servers are restarted, and a driver must be able to switch between states as the min and max wire version changes for the servers to which it is connected.

      A drivers must allow operations when all of the connected servers are compatible.

            Assignee:
            jeff.yemin@mongodb.com Jeffrey Yemin
            Reporter:
            barrie Barrie Segal
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: