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.
|2.12: Drivers should only talk to servers with overlapping wire versions||JAVA-1026||Closed||Unassigned||2.12.0|
|3.0: Drivers should only talk to servers with overlapping wire versions||JAVA-1027||Closed||Unassigned||3.0.0|