<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:02:10 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-43065] Perf Tests Needed For Deprecation of legacy wire protocol</title>
                <link>https://jira.mongodb.org/browse/SERVER-43065</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;tl;dr: with some performance tests we can see if we can deprecate OP_QUERY and OP_GETMORE in favor of find and getMore. OP_QUERY and OP_GETMORE are legacy for FCV 3.2 servers and drivers.&lt;/p&gt;

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

&lt;p&gt;Charlie Swanson wrote in PM-1371:&lt;/p&gt;

&lt;p&gt;I believe there was some noticeable regression of the find and getMore commands compared to OP_QUERY and OP_GETMORE?&lt;/p&gt;

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

&lt;p&gt;I asked for more and he wrote:&lt;/p&gt;

&lt;p&gt;The summary is that the query team would&#160;&lt;em&gt;love&lt;/em&gt;&#160;to deprecate the legacy wire protocol and move on to find and getMore commands for everything. Our understanding is that the command versions are the default in modern drivers, but no one is comfortable deprecating the old ones because there was some performance regression when first testing find and getMore command vs. the old OP_QUERY and OP_GETMORE. I have heard rumors that further investigation proved the server wasn&apos;t as much to blame as we thought it was, but we haven&apos;t followed up to build new performance tests and validate that performance is comparable. Supporting OP_QUERY and OP_GETMORE has slowed development of many query projects. The most recent example I can think of is change streams. We currently have two implementations for iterating a cursor: OP_GETMORE and getMore command are completely independent and definitely duplicate a lot of logic. We have postponed investing in refactoring this in hopes of deprecating OP_GETMORE. See&#160;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-24478&quot; title=&quot;Use command path to execute OP_QUERY &amp;amp; OP_GET_MORE&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-24478&quot;&gt;SERVER-24478&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="910214">SERVER-43065</key>
            <summary>Perf Tests Needed For Deprecation of legacy wire protocol</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="12300">Won&apos;t Do</resolution>
                                        <assignee username="backlog-server-servicearch">Backlog - Service Architecture</assignee>
                                    <reporter username="lauren.lewis@mongodb.com">Lauren Lewis</reporter>
                        <labels>
                    </labels>
                <created>Wed, 28 Aug 2019 17:10:42 +0000</created>
                <updated>Tue, 6 Dec 2022 02:49:26 +0000</updated>
                            <resolved>Thu, 24 Feb 2022 21:56:17 +0000</resolved>
                                                                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="4375704" author="JIRAUSER1262719" created="Thu, 24 Feb 2022 21:56:17 +0000"  >&lt;p&gt;We haven&#8217;t heard back from you for at least one calendar year, so this issue is being closed. If this is still an issue for you, please provide additional information and we will reopen the ticket.&lt;/p&gt;</comment>
                            <comment id="2399906" author="sheeri.cabral" created="Thu, 29 Aug 2019 15:45:21 +0000"  >&lt;p&gt;Assigning to service architecture backlog, although there&apos;s also drivers work to be done (but that&apos;s in a separate ticket). It&apos;s possible that the perf tests are the responsibility of drivers, too? Will cc Scott.&lt;/p&gt;</comment>
                            <comment id="2399903" author="sheeri.cabral" created="Thu, 29 Aug 2019 15:44:01 +0000"  >&lt;p&gt;&#160;&lt;br/&gt;
Sheeri: This is great information. What kind of user impact does this have, to deprecate OP_GETMORE? Is it all under the hood, or would folks on legacy drivers/clients have to upgrade/change code?&lt;br/&gt;
 &#160;&lt;br/&gt;
 &#160;&lt;br/&gt;
 Charlie: Good question. I think the folks on drivers would have a better answer, but my suspicion is that it would require either upgrading the driver or changing the code which configures the driver. Not &quot;free&quot;, but I would hope it&apos;s relatively non-invasive.&lt;br/&gt;
&#160;&lt;br/&gt;
David Storch weighed in:&lt;br/&gt;
&#160;Anyone who is using a 3.2 or newer driver without special configuration against a 3.2 or newer server is using the find/getMore commands, and will not be using OP_QUERY/OP_GETMORE. Such users would be unaffected by deprecating the legacy reads protocol. Applications using older drivers can simply upgrade their drivers in order to ensure that they are not using legacy reads.&lt;br/&gt;
&#160;&lt;br/&gt;
There are a few subtleties with this:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Drivers like to support really old versions of the server, and thus will probably continue to maintain support for OP_QUERY/OP_GETMORE in order to communicate with an old server. Deprecation and eventual removal would help server team a lot, but would take longer to simplify the lives of driver engineers.&lt;/li&gt;
	&lt;li&gt;I&apos;m not sure about this, but some drivers may have a configuration option to allow using legacy reads against a 3.2 or newer server. We would need to determine whether or not this is the case, and if so, how many applications rely on it.&lt;/li&gt;
	&lt;li&gt;As Charlie alluded to, it&apos;s possible that the server and/or drivers may still be slower for read commands than for legacy reads. In order to be comfortable with this deprecation, we may wish to schedule a performance investigation to get up-to-date numbers.&lt;/li&gt;
	&lt;li&gt;It&apos;s possible that drivers still fall back to OP_QUERY/OP_GETMORE for some exotic options, e.g. exhaust cursors. We should check with them.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/find_getmore_killcursors_commands.rst&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;This spec&lt;/a&gt;&#160;may be helpful in describing how drivers use the read commands, although I&apos;m not sure if it&apos;s fully up to date.&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>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25132"><![CDATA[Service Arch]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 29 Aug 2019 15:44:01 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 49 weeks, 6 days 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_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>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 49 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-server-servicearch</customfieldvalue>
            <customfieldvalue>lauren.lewis@mongodb.com</customfieldvalue>
            <customfieldvalue>sheeri.cabral</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hvnexr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hvc6m7:</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_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</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|hvn173:</customfieldvalue>

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