<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:41:59 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-57495] Increase minimum incoming wire version to 6</title>
                <link>https://jira.mongodb.org/browse/SERVER-57495</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The server currently uses a minimum incoming wire version of &lt;a href=&quot;https://github.com/mongodb/mongo/blob/985f68302752d214abe127e66a2f22219502e585/src/mongo/db/wire_version.h#L133&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;0 ( RELEASE_2_4_AND_BEFORE)&lt;/a&gt;. However, we have recently deprecated the legacy op codes (OP_QUERY, OP_INSERT, and so on) under &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-55788&quot; title=&quot;Deprecate legacy wire protocol opcodes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-55788&quot;&gt;&lt;del&gt;SERVER-55788&lt;/del&gt;&lt;/a&gt;. 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1770636">SERVER-57495</key>
            <summary>Increase minimum incoming wire version to 6</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-query-execution">Backlog - Query Execution</assignee>
                                    <reporter username="david.storch@mongodb.com">David Storch</reporter>
                        <labels>
                    </labels>
                <created>Mon, 7 Jun 2021 14:59:51 +0000</created>
                <updated>Tue, 23 May 2023 18:05:26 +0000</updated>
                                                                                                <votes>0</votes>
                                    <watches>11</watches>
                                                                                                                <comments>
                            <comment id="5107276" author="david.storch" created="Wed, 11 Jan 2023 21:13:21 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jeff.yemin%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;jeff.yemin@mongodb.com&quot;&gt;jeff.yemin@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=bernie%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;bernie@mongodb.com&quot;&gt;bernie@mongodb.com&lt;/a&gt; it&apos;s been almost another year, so I thought it would be a good time to check back in on this ticket. It&apos;s currently slated for the &quot;7.0 Upgrade/Downgrade&quot; project, which means that we should either decide that this change is safe to make in 7.0 or bump it another year forwards to the &quot;8.0 Upgrade/Downgrade&quot; project. Is it easy for you to check your numbers again regarding the number of projects using versions of PyMongo that we know would be affected by this change?&lt;/p&gt;

&lt;p&gt;In the meantime, I&apos;ll look into whether we can amend the API Version document to clarify that wire versions 0 through 5 are not protected by the stable API.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="4488713" author="kyle.suarez" created="Mon, 18 Apr 2022 17:40:26 +0000"  >&lt;blockquote&gt;
&lt;p&gt;So yes, it seems like a mistake in how API version 1 was defined, which we can go back and fix.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Let&apos;s track this work, but in a ticket separate from this one. What project should we file a ticket in? SERVER or WRITING?&lt;/p&gt;</comment>
                            <comment id="4488678" author="david.storch" created="Mon, 18 Apr 2022 17:31:43 +0000"  >&lt;blockquote&gt;
&lt;p&gt;Under the section &quot;Other behaviors in Version 1&quot; it includes the following: &quot;MongoDB 5.0&apos;s reported minWireVersion (which is 0)&quot;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Oh, I missed that! That&apos;s fascinating.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I think you are advocating for the former, i.e. that the definition of API version &quot;1&quot; should be changed to allow a minWireVersion in the range &lt;span class=&quot;error&quot;&gt;&amp;#91;0, 6&amp;#93;&lt;/span&gt;.  Is that correct?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Yes. It seems like a mistake that the minWireVersions [0, 5] were included in API version 1. The scope document also says this when discussing things that are purposefully omitted from stable API version 1:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OP_INSERT, OP_UPDATE, OP_DELETE, OP_GET_MORE, and OP_KILL_CURSORS. (For several years official drivers have used OP_MSG for all operations except a connection&apos;s initial isMaster. This project does not protect pre-3.6 from breaking changes; if we drop these message types, old drivers will stop working.)&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;We knew explicitly when defining API v1 that we intended to get rid of these old op codes and make pre-3.6 drivers stop working. To me, this seems synonymous with dropping support for wire versions [0, 5]. So yes, it seems like a mistake in how API version 1 was defined, which we can go back and fix.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For PyMongo, there are currently around 4K projects on versions that could potentially be disrupted, and those numbers are holding pretty steady over the past six months.  I&apos;ll check about other drivers, and update with results.&lt;/p&gt;

&lt;p&gt;It turns out we were wrong about the Node driver, in a good way.  Node driver 3.0 was indeed the release that shipped at the same time as MongoDB 3.6.  But it did so without OP_MSG support.  OP_MSG support wasn&apos;t added until 3.2.0 (the MongoDB 4.2-compatible release), at which point the maxWireVersion was bumped, all the way to 8 (4.2&apos;s maxWireVersion).&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Ack, thanks for digging into this!&lt;/p&gt;</comment>
                            <comment id="4486516" author="jeff.yemin" created="Fri, 15 Apr 2022 21:59:22 +0000"  >&lt;blockquote&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It turns out we were wrong about the Node driver, in a good way.&#160; Node driver 3.0 was indeed the release that shipped at the same time as MongoDB 3.6.&#160; But it did so &lt;em&gt;without&lt;/em&gt; OP_MSG support.&#160; OP_MSG support wasn&apos;t added until 3.2.0 (the MongoDB 4.2-compatible release), at which point the maxWireVersion &lt;em&gt;was&lt;/em&gt; bumped, all the way to 8 (4.2&apos;s maxWireVersion).&lt;/p&gt;</comment>
                            <comment id="4486450" author="jeff.yemin" created="Fri, 15 Apr 2022 21:22:46 +0000"  >&lt;blockquote&gt;&lt;p&gt;I understand why in the abstract a stable API version X would require that some range &lt;span class=&quot;error&quot;&gt;&amp;#91;minWireVersionY, maxWireVersionY&amp;#93;&lt;/span&gt; is always supported,&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It&apos;s not abstract, though.&#160; The Stable API scope doc (which is effectively the specification of the Stable API) includes the following two concrete statements:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Under the section &quot;&lt;b&gt;Other behaviors in Version 1&lt;/b&gt;&quot; it includes the following: &quot;MongoDB 5.0&apos;s reported minWireVersion (which is 0)&quot;&lt;/li&gt;
	&lt;li&gt;Under the section &quot;&lt;b&gt;Breaking change&lt;/b&gt;&quot; in includes the following as one of the breaking changes: &quot;Increase isMaster.minWireVersion&quot;&#160;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;So to make this change would require changing the definition of either Stable API version &quot;1&quot;, or the definition of a breaking change (for any API version).&lt;/p&gt;

&lt;p&gt;I think you are advocating for the former, i.e. that the definition of API version &quot;1&quot; should be changed to allow a minWireVersion in the range &lt;span class=&quot;error&quot;&gt;&amp;#91;0, 6&amp;#93;&lt;/span&gt;.&#160; Is that correct?&#160;&lt;/p&gt;

&lt;p&gt;If so, I think it&apos;s a reasonable position, as it should be compatible with any driver that supports the 3.6 wire protocol, which is going back a long way.&#160; However, you point out that&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;My understanding was that we would implement this change as soon as the usage of those driver versions against the latest version of the server was sufficiently low. Also, I thought that using these driver versions against a &amp;gt;=5.1 server was technically not supported, but we still wanted to avoid disrupting these users.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;For PyMongo, there are currently around 4K projects on versions that could potentially be disrupted, and those numbers are holding pretty steady over the past six months.&#160; I&apos;ll check about other drivers, and update with results.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="4465625" author="david.storch" created="Thu, 7 Apr 2022 19:22:13 +0000"  >&lt;p&gt;Right, thanks for the clarification &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jeff.yemin&quot; class=&quot;user-hover&quot; rel=&quot;jeff.yemin&quot;&gt;jeff.yemin&lt;/a&gt;. Do you happen to know whether this change is safe for the server team to make in 6.1? I am guessing based on our previous discussions on this topic that we should probably wait a bit longer before the server bumps its minimum wire version for incoming connections from external clients to&#160;6 (SUPPORTS_OP_MSG).&lt;/p&gt;

&lt;p&gt;Somewhat relatedly, I suspect that after branching for 6.0 we can change the minimum wire version of &lt;em&gt;internal&lt;/em&gt; incoming connections to 6. It is currently still &lt;a href=&quot;https://github.com/mongodb/mongo/blob/master/src/mongo/db/wire_version.h#L150&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;specified in the server code here to be 0 (RELEASE_2_4_AND_BEFORE)&lt;/a&gt;. Perhaps this should be tracked in a separate ticket, since it shouldn&apos;t have drivers consequences?&lt;/p&gt;</comment>
                            <comment id="4464216" author="jeff.yemin" created="Thu, 7 Apr 2022 13:53:22 +0000"  >&lt;blockquote&gt;&lt;p&gt;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.) &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Drivers do not advertise their range of wire version support (i.e., it is not included in the &lt;tt&gt;hello&lt;/tt&gt; command).  Rather, drivers compare the server&apos;s advertised wire version range with their own when receiving the &lt;tt&gt;hello&lt;/tt&gt; command response.&lt;/p&gt;</comment>
                            <comment id="4464171" author="kyle.suarez" created="Thu, 7 Apr 2022 13:40:23 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=david.storch&quot; class=&quot;user-hover&quot; rel=&quot;david.storch&quot;&gt;david.storch&lt;/a&gt; said we should retriage this ticket during the 6.0 release cycle, so now seems like a good time as any to send this back to the triage queue for discussion &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.mongodb.org/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="4045267" author="david.storch" created="Wed, 8 Sep 2021 16:32:00 +0000"  >&lt;p&gt;I discussed this a bit further with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=behackett&quot; class=&quot;user-hover&quot; rel=&quot;behackett&quot;&gt;behackett&lt;/a&gt;. Although using an older driver with a newer server is not officially supported, we have a test matrix showing that drivers often are forwards-compatible. This means that, for example, an application could be successfully using a 3.6-compatible driver against a 5.0 server. Such users should generally upgrade their driver to the 5.0-compatible release, but they may not be &lt;em&gt;forced&lt;/em&gt; to do so.&lt;/p&gt;

&lt;p&gt;We very much expect that people will attempt to use 3.6-compatible drivers against a 5.1 server. This should work, despite the removal of support for the legacy op codes, because 3.6 drivers support OP_MSG. However, because there are particular versions of PyMongo and the Node driver which do not correctly advertise wire version support for OP_MSG, the change proposed by this ticket would make it impossible to use such PyMongo and Node drivers with a 5.1 server.&lt;/p&gt;

&lt;p&gt;Bernie gathered some numbers off Atlas, and found the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There are 4264 Atlas instances using one of PyMongo 3.6, 3.7 or 3.8. The vast majority of that usage is with MongoDB 4.4, with some being used with 5.0. The problem is far worse for Node 3.0.x, 3.1.x or 3.2.x. 25k+ instances with MongoDB 4.4 alone.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;That means that plenty of users are likely to attempt to use a driver which does not correctly advertise OP_MSG support against a 5.1 server once 5.1 has been released. These users would experience a disruption and would have to upgrade their driver. (These users should be upgrading their drivers anyway, but we don&apos;t want to create a disruption that is not strictly necessary.)&lt;/p&gt;

&lt;p&gt;For this reason, our current decision is not to implement this change in 5.1, and we probably shouldn&apos;t include it in 5.2 either. I am marking this &quot;6.0 Required&quot; so that we do not forget about it. We should re-triage this ticket sometime before the 6.0 RC cycle in order to decide whether to include this change in 6.0.&lt;/p&gt;</comment>
                            <comment id="3869236" author="JIRAUSER1257640" created="Wed, 9 Jun 2021 18:11:07 +0000"  >&lt;p&gt;We mark it 6.0 just to remind ourselves.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>10.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25125"><![CDATA[Query Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 9 Jun 2021 18:11:07 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 4 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2895</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>alex.bevilacqua@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 4 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-query-execution</customfieldvalue>
            <customfieldvalue>david.storch@mongodb.com</customfieldvalue>
            <customfieldvalue>ethan.zhang@mongodb.com</customfieldvalue>
            <customfieldvalue>jeff.yemin@mongodb.com</customfieldvalue>
            <customfieldvalue>kyle.suarez@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzk1vb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr261b:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzjo4f:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>