<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:25:18 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-2327] Propagate Original Error for Write Errors Labeled NoWritesPerformed</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-2327</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;div class=&quot;panel&quot; style=&quot;background-color: #fafbfc;border-width: 1px;&quot;&gt;&lt;div class=&quot;panelContent&quot; style=&quot;background-color: #fafbfc;&quot;&gt;
&lt;h3&gt;&lt;a name=&quot;Summary&quot;&gt;&lt;/a&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;What is the problem or use case, what are we trying to achieve?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We have definite (write definitely aborted) and indefinite (write may have committed) errors we return to the client and we do not make it clear which are definite and which are indefinite.&lt;/p&gt;

&lt;p&gt;We want to change the driver spec to return indefinite errors any time it could be indefinite. For example, WriteConcernErrors and SocketExceptions are both indefinite. The Server is in the best position to say (probably via an error label) which errors returned by the server are definite. On bulk writes, NotWritablePrimary is the only definite retryable error. NoSuchTransaction is also definite and handled specially by the driver, though it is not labeled &#8220;retriable&#8221;. Writes with multi:true are not retryable and thus there is no question about the error a driver should return.&lt;/p&gt;

&lt;p&gt;Error labels were introduced in 4.3.1 by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-43941&quot; title=&quot;Add &amp;quot;errorLabels&amp;quot; field to failCommand fail point&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-43941&quot;&gt;&lt;del&gt;SERVER-43941&lt;/del&gt;&lt;/a&gt;. For brevity, the prose tests must only run on versions &amp;gt;= 6.0.&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;Motivation&quot;&gt;&lt;/a&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;a name=&quot;Whoistheaffectedenduser%3F&quot;&gt;&lt;/a&gt;Who is the affected end user?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Who are the stakeholders?&lt;/em&gt;&lt;br/&gt;
Anyone using retryable writes or transaction retryability.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Howdoesthisaffecttheenduser%3F&quot;&gt;&lt;/a&gt;How does this affect the end user?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Are they blocked? Are they annoyed? Are they confused?&lt;/em&gt;&lt;br/&gt;
If the driver stops retrying for them, they could take an incorrect action and accidentally double commit a write.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Howlikelyisitthatthisproblemorusecasewilloccur%3F&quot;&gt;&lt;/a&gt;How likely is it that this problem or use case will occur?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Main path? Edge case?&lt;/em&gt;&lt;br/&gt;
This is on the main error path, but with CSOT will become less likely.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Iftheproblemdoesoccur%2Cwhataretheconsequencesandhowseverearethey%3F&quot;&gt;&lt;/a&gt;If the problem does occur, what are the consequences and how severe are they?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Minor annoyance at a log message? Performance concern? Outage/unavailability? Failover can&apos;t complete?&lt;/em&gt;&lt;br/&gt;
Users may take incorrect action based on unclear information we provide.&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Isthisissueurgent%3F&quot;&gt;&lt;/a&gt;Is this issue urgent?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Does this ticket have a required timeline? What is it?&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Isthisticketrequiredbyadownstreamteam%3F&quot;&gt;&lt;/a&gt;Is this ticket required by a downstream team?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Needed by e.g. Atlas, Shell, Compass?&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Isthisticketonlyfortests%3F&quot;&gt;&lt;/a&gt;Is this ticket only for tests?&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Does this ticket have any functional impact, or is it just test improvements?&lt;/em&gt;&lt;br/&gt;
This has a functional impact.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="2045420">DRIVERS-2327</key>
            <summary>Propagate Original Error for Write Errors Labeled NoWritesPerformed</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="13453" iconUrl="https://jira.mongodb.org/images/icons/status_generic.gif" description="">Implementing</status>
                    <statusCategory id="4" key="indeterminate" colorName="inprogress"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="preston.vasquez@mongodb.com">Preston Vasquez</assignee>
                                    <reporter username="judah.schvimer@mongodb.com">Judah Schvimer</reporter>
                        <labels>
                    </labels>
                <created>Thu, 12 May 2022 02:32:05 +0000</created>
                <updated>Fri, 27 Jan 2023 21:38:10 +0000</updated>
                                                                <component>Retryability</component>
                                        <votes>0</votes>
                                    <watches>15</watches>
                                                                                                                <comments>
                            <comment id="4897910" author="JIRAUSER1258163" created="Wed, 12 Oct 2022 14:28:05 +0000"  >&lt;p&gt;For future readers: this issue is caused by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66116&quot; title=&quot;Aborted Read with MongoNotPrimaryException&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66116&quot;&gt;SERVER-66116&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="4861524" author="rachelle.palmer" created="Wed, 28 Sep 2022 13:12:20 +0000"  >&lt;p&gt;Nope, that&apos;s good enough for me &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="4860526" author="JIRAUSER1253446" created="Wed, 28 Sep 2022 02:07:05 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=rachelle.palmer%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;rachelle.palmer@mongodb.com&quot;&gt;rachelle.palmer@mongodb.com&lt;/a&gt; I have merged a PR requiring 6.0+, does this need to be changed?&lt;/p&gt;</comment>
                            <comment id="4823274" author="xgen-internal-githook" created="Tue, 13 Sep 2022 17:23:22 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Neil Shweky&apos;, &apos;email&apos;: &apos;neilshweky@gmail.com&apos;, &apos;username&apos;: &apos;Neilshweky&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2327&quot; title=&quot;Propagate Original Error for Write Errors Labeled NoWritesPerformed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2327&quot;&gt;DRIVERS-2327&lt;/a&gt;: limit prose test to server versions 6.0+ (#1304)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2327&quot; title=&quot;Propagate Original Error for Write Errors Labeled NoWritesPerformed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2327&quot;&gt;DRIVERS-2327&lt;/a&gt;: limit prose test to server versions 6.0+&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/bb1e2ee3ce18b917a85adb68beaf1428b3e46b2a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/bb1e2ee3ce18b917a85adb68beaf1428b3e46b2a&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="4795383" author="xgen-internal-githook" created="Thu, 1 Sep 2022 15:16:58 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Preston Vasquez&apos;, &apos;email&apos;: &apos;24281431+prestonvasquez@users.noreply.github.com&apos;, &apos;username&apos;: &apos;prestonvasquez&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2327&quot; title=&quot;Propagate Original Error for Write Errors Labeled NoWritesPerformed&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2327&quot;&gt;DRIVERS-2327&lt;/a&gt; NoWritesPerformed Retryable Writes Error Handling (#1297)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/e4a5564a157cd877b09b52cc467988eb44818021&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/e4a5564a157cd877b09b52cc467988eb44818021&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="2047207">SERVER-66479</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2037603">SERVER-66116</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10620">
                    <name>Issue split</name>
                                            <outwardlinks description="split to">
                                        <issuelink>
            <issuekey id="2105285">CSHARP-4288</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105284">CXX-2563</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105283">CDRIVER-4449</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105286">GODRIVER-2516</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105289">MOTOR-1013</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105291">PHPLIB-935</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105290">PYTHON-3388</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105292">RUBY-3079</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105293">RUST-1433</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105287">JAVA-4701</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2105288">NODE-4503</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2179878">DRIVERS-2501</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2121637">SERVER-69129</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="552724">PYTHON-1573</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2126880">SERVER-69295</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2155742">DRIVERS-2468</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_17052" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Downstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Drivers need to implement a new retryable writes prose test (see &lt;a href=&quot;https://github.com/mongodb/specifications/commit/e4a5564a157cd877b09b52cc467988eb44818021&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;mongodb/specifications@e4a5564&lt;/a&gt;), and implement operation error handling such that if a retry event fails with an error labeled NoWritesPerformed the original error is propagated.&lt;/p&gt;</customfieldvalue>

                        </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_23952" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Driver Compliance</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<style type='text/css'>
         #scriptField, #scriptField *{
                border: 1px solid black;
            }

            #scriptField{
                border-collapse: collapse;
            }

            #scriptField td {
                text-align: center; /* Center-align text in table cells */
            }

            #scriptField td.key {
                text-align: left; /* Left-align text in the Key column */
            }

            #scriptField a {
                text-decoration: none; /* Remove underlines from links */
                border: none; /* Remove border from links */
            }
            
            /* Add green background color to cells with FixVersion */
            #scriptField td.hasFixVersion {
                background-color: #00FF00; /* Green color code */
            }

            /* Center-align the first row headers */
            #scriptField th {
                text-align: center;
            }
        </style>
<table id='scriptField'>
  <tr>
    <th>Key</th>
    <th>Status/Resolution</th>
    <th>FixVersion</th>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CDRIVER-4449'>CDRIVER-4449</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>1.24.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CXX-2563'>CXX-2563</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CSHARP-4288'>CSHARP-4288</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-2516'>GODRIVER-2516</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>1.11.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-4701'>JAVA-4701</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>4.8.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-4503'>NODE-4503</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>4.11.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/MOTOR-1013'>MOTOR-1013</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PYTHON-3388'>PYTHON-3388</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>4.4</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PHPLIB-935'>PHPLIB-935</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>1.16.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-3079'>RUBY-3079</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.19.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUST-1433'>RUST-1433</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.7.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/SWIFT-1624'>SWIFT-1624</a>
    </td>
    <td>Won't Do</td>
    <td class=''></td>
  </tr>
</table>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_21553" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Quarter</customfieldname>
                        <customfieldvalues>
                                        <label>FY23Q3</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0dk6o:</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_22279" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Server Compat</customfieldname>
                        <customfieldvalues>
                                        <label>6.1</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_21457" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Upstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Commands which failed with the RetryableWriteError label can now also return a new NoWritesPerformed error label if no writes were performed during the operation of that command.&lt;/p&gt;</customfieldvalue>

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