<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:24:54 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-2170] Errors on retryable ops should indicate originating server when possible</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-2170</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;p&gt;While discussing some of the error reporting improvements that &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=oleg.pudeyev&quot; class=&quot;user-hover&quot; rel=&quot;oleg.pudeyev&quot;&gt;oleg.pudeyev&lt;/a&gt; has added to the Ruby driver, I learned that Ruby goes out of its way to report the specific server that produced an error ultimately reported when a retryable operation totally fails. This overcomes possible ambiguity where an operation can report an error message corresponding to the first or second attempt. &lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/retryable-writes/retryable-writes.rst#executing-retryable-write-commands&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Executing Retryable Write Commands&lt;/a&gt; states:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;If an error would not allow the caller to infer that an attempt was made (e.g. connection pool exception originating from the driver), the original error should be raised. If the retry failed due to another retryable error or some other error originating from the server, that error should be raised instead as the caller can infer that an attempt was made and the second error is likely more relevant (with respect to the current topology state).&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;While &lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/retryable-writes/retryable-writes.rst#command-monitoring&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Command Monitoring&lt;/a&gt; can also be used to infer the error&apos;s originating server, we can&apos;t rely on that being enabled in production systems where applications might only be logging an exception.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.rst&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Retryable Reads&lt;/a&gt; spec does not appear to have any section discussing error reporting (possible oversight), but it should also be able to implement this.&lt;/p&gt;

&lt;p&gt;If a driver already attaches a server description (or equivalent) to its exceptions for server-side errors, I think they could implement this ticket just by ensuring that the attached server is always the originating server of the error being reported. For example, a driver that always attaches the first attempt&apos;s server to such an exception should be changed to conditionally attach the first or second accordingly.&lt;/p&gt;
</description>
                <environment></environment>
        <key id="964539">DRIVERS-2170</key>
            <summary>Errors on retryable ops should indicate originating server when possible</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="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="jamis.buck@mongodb.com">Jamis Buck</assignee>
                                    <reporter username="jmikola@mongodb.com">Jeremy Mikola</reporter>
                        <labels>
                    </labels>
                <created>Tue, 8 Oct 2019 14:52:47 +0000</created>
                <updated>Thu, 11 Jan 2024 19:35:06 +0000</updated>
                                                                <component>Retryability</component>
                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="5997632" author="xgen-internal-githook" created="Tue, 9 Jan 2024 16:33:29 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Jamis Buck&apos;, &apos;email&apos;: &apos;jamisbuck@gmail.com&apos;, &apos;username&apos;: &apos;jamis&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2170&quot; title=&quot;Errors on retryable ops should indicate originating server when possible&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2170&quot;&gt;DRIVERS-2170&lt;/a&gt; Server info on retryable errors must reflect the originating server (#1480)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-2170&quot; title=&quot;Errors on retryable ops should indicate originating server when possible&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-2170&quot;&gt;DRIVERS-2170&lt;/a&gt; server info on retryable errors must reflect originating server&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;update changelogs&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;simplify the paragraph&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/7145efa0aabaa14f356ff15d3f2a732785f67497&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/7145efa0aabaa14f356ff15d3f2a732785f67497&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="5941938" author="JIRAUSER1272422" created="Mon, 11 Dec 2023 20:31:03 +0000"  >&lt;p&gt;PR: &lt;a href=&quot;https://github.com/mongodb/specifications/pull/1480&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/pull/1480&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2471645" author="oleg.pudeyev" created="Tue, 8 Oct 2019 15:03:07 +0000"  >&lt;p&gt;FYI, in Ruby this diagnostic is applied to all failing operations, not just those eligible to be retried. &lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10620">
                    <name>Issue split</name>
                                            <outwardlinks description="split to">
                                        <issuelink>
            <issuekey id="2486981">CDRIVER-4753</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2486987">CXX-2776</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487021">JAVA-5225</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487033">MOTOR-1201</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487027">NODE-5719</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487039">PYTHON-4017</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487050">RUBY-3340</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487053">RUST-1787</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2486995">CSHARP-4826</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487006">GODRIVER-3031</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487044">PHPLIB-1296</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="989991">RUBY-2004</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2543679">PYTHON-4137</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="703633">RUBY-1744</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="908835">RUBY-1905</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="966968">RUBY-1954</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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;&lt;b&gt;Summary of necessary driver changes&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;This only affects drivers that include server information (like the server name or address) in exceptions and error messages.&lt;/p&gt;

&lt;p&gt;Any driver that includes server information in an exception or error message must ensure that the exception or message refers to the server that originated the error. For example, during a retry of a failed read or write, the original server must not simply be carried over to a subsequent error.&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-4753'>CDRIVER-4753</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CXX-2776'>CXX-2776</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CSHARP-4826'>CSHARP-4826</a>
    </td>
    <td>Scheduled</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-3031'>GODRIVER-3031</a>
    </td>
    <td>Scheduled</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-5225'>JAVA-5225</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-5719'>NODE-5719</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/MOTOR-1201'>MOTOR-1201</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PYTHON-4017'>PYTHON-4017</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PHPLIB-1296'>PHPLIB-1296</a>
    </td>
    <td>Scheduled</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-3340'>RUBY-3340</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUST-1787'>RUST-1787</a>
    </td>
    <td>Works as Designed</td>
    <td class=''></td>
  </tr>
</table>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18362" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                        <customfieldname>Engineering Lead</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>andreas.braun@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_21553" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Quarter</customfieldname>
                        <customfieldvalues>
                                        <label>FY24Q4</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|huk6jb:</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_14261" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 2 Nov 2023 00:00:00 +0000</customfieldvalue>

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