-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Execution
The server currently uses a minimum incoming wire version of 0 ( RELEASE_2_4_AND_BEFORE). However, we have recently deprecated the legacy op codes (OP_QUERY, OP_INSERT, and so on) under SERVER-55788. We plan to remove support for these op codes entirely in version 5.1.0. Therefore, in order for a driver to be compatible with a 5.1.0+ server, it must support OP_MSG. A wire version of 6 (SUPPORTS_OP_MSG) indicates that the client supports the OP_MSG protocol.
As a result of this situation, it would be sensible for the server to require the incoming wire version to be at least 6. (To be more precise, the range of wire version support advertised by the client must include at least one wire version 6 or greater.) Unfortunately, we have discovered at least two officially supported driver projects with versions that support OP_MSG but did not increase their wire version to 6. This is known to be the case for PyMongo versions 3.6.x, 3.7.x and 3.8.x as well as the 3.0.x, 3.1.x, 3.2.x versions of the Node driver. If we were to require an incoming wire version of 6 in version 5.1.0 of the server, then these versions of Node and Python would break despite being 3.6 compatible releases. In order to avoid breaking these drivers, we have chosen not to make any changes to the required wire version in 5.1.0.
In a future release (perhaps 6.1.0?) we should consider making this wire version change. At this point, the server will have indeed not truly supported wire versions 0 through 5 for over a year, but we will have allowed a grace period in which clients can still depend on PyMongo 3.6.x, 3.7.x, 3.8.x and Node 3.0.x, 3.1.x, 3.2. Once a sufficiently long grace period expires, we can increase the minimum wire version as originally planned and require applications using these old-ish PyMongo and Node versions to upgrade their driver.