<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:23:38 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>[DRIVERS-1570] Consider wire version changes when sending equivalent write command on a retry attempt</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-1570</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.rst#b-sending-an-equivalent-command-for-the-second-attempt&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;3b. Sending an equivalent command for the second attempt?&lt;/a&gt; in the Retryable Reads spec allows drivers to do one of two things when retrying a command:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;If the wire version changes between retry attempts, the driver can recreate the command document according to the wire version of the server selected for the retry attempt. Any error in doing so should result in skipping the retry attempt and raising the original error.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;If the driver doesn&apos;t recreate command documents, it can raise an error whenever the wire version dips between retry attempts.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The Retryable Writes spec has no such language. At the time the spec was written, the feature was only supported on a single server version and we only considered the scenario where the server selected for a retry attempt did not support retryable writes at all (e.g. pre-3.6). To quote the spec:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;If the driver cannot select a server for the retry attempt or the selected server does not support retryable writes, retrying is not possible and drivers MUST raise the original retryable error. In both cases, the caller is able to infer that an attempt was made.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Since the time the spec was written, supported write commands have had the following API changes (new options):&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;insert: comment in 4.4+&lt;/li&gt;
	&lt;li&gt;update: hint in 4.2+ and comment in 4.4+&lt;/li&gt;
	&lt;li&gt;delete: hint and comment in 4.4+&lt;/li&gt;
	&lt;li&gt;findAndModify: hint and comment in 4.4+&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;If we can verify that 3.6+ servers raise always raise errors for unsupported options (thanks to strict validation), then perhaps no spec and driver changes are needed; however, it&apos;d still be wise to explicitly discuss this in the spec and explain that drivers can rely on that behavior.&lt;/p&gt;

&lt;p&gt;Alternatively, we may want to adopt language similar to what is found in the Retryable Reads spec, which may entail driver changes.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1628285">DRIVERS-1570</key>
            <summary>Consider wire version changes when sending equivalent write command on a retry attempt</summary>
                <type id="14901" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14700&amp;avatarType=issuetype">Spec Change</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="-1">Unassigned</assignee>
                                    <reporter username="jmikola@mongodb.com">Jeremy Mikola</reporter>
                        <labels>
                    </labels>
                <created>Fri, 19 Feb 2021 07:09:16 +0000</created>
                <updated>Thu, 31 Mar 2022 13:44:16 +0000</updated>
                                                                <component>Retryability</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1628288">CDRIVER-3910</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="1628283">PHPLIB-623</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                            <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10951" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Driver Changes</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10748"><![CDATA[Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hyhezb:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>