<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:22:36 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-926] Consider making ReadConcernMajorityNotAvailableYet a retryable error</title>
                <link>https://jira.mongodb.org/browse/DRIVERS-926</link>
                <project id="10980" key="DRIVERS">Drivers</project>
                    <description>&lt;p&gt;This came up during testing for Safe Replica Set Reconfig. &lt;/p&gt;

&lt;p&gt;During a safe reconfig, the primary will drop snapshots after writing down a new config document. If a read is issued on this node before it updates its snapshot, the server fails with ReadConcernMajorityNotAvailableYet. &lt;/p&gt;

&lt;p&gt;The node should eventually be able to update the committed snapshot through heartbeats (2 second interval), so the read will eventually succeed. It seems like we should treat this as a retryable error. &lt;/p&gt;</description>
                <environment></environment>
        <key id="1255174">DRIVERS-926</key>
            <summary>Consider making ReadConcernMajorityNotAvailableYet a retryable error</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="kyle.kloberdanz@mongodb.com">Kyle Kloberdanz</assignee>
                                    <reporter username="pavithra.vetriselvan@mongodb.com">Pavithra Vetriselvan</reporter>
                        <labels>
                    </labels>
                <created>Mon, 9 Mar 2020 21:22:53 +0000</created>
                <updated>Mon, 4 Dec 2023 16:32:49 +0000</updated>
                                                                <component>Retryability</component>
                                        <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="5919493" author="xgen-internal-githook" created="Fri, 1 Dec 2023 21:25:55 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Kyle Kloberdanz&apos;, &apos;email&apos;: &apos;kyle.kloberdanz@mongodb.com&apos;, &apos;username&apos;: &apos;kkloberdanz&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-926&quot; title=&quot;Consider making ReadConcernMajorityNotAvailableYet a retryable error&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-926&quot;&gt;DRIVERS-926&lt;/a&gt; Make ReadConcernMajorityNotAvailableYet a retryable read error (#1479)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/specifications/commit/a0bac5c874786d49cb6a3647182a9955fd2be94a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/commit/a0bac5c874786d49cb6a3647182a9955fd2be94a&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5916512" author="shane.harvey" created="Thu, 30 Nov 2023 19:18:35 +0000"  >&lt;p&gt;Making ReadConcernMajorityNotAvailableYet a retryable read error makes sense to me.&lt;/p&gt;</comment>
                            <comment id="2960417" author="pavithra.vetriselvan" created="Tue, 10 Mar 2020 14:54:24 +0000"  >&lt;p&gt;Oh, got it! Thanks for clarifying. Let me know if you have any more questions about the server&apos;s behavior.&lt;/p&gt;</comment>
                            <comment id="2956085" author="shane.harvey" created="Mon, 9 Mar 2020 23:43:11 +0000"  >&lt;p&gt;Sorry, I&apos;m not trying to say that we shouldn&apos;t retry here. Just trying to point out that our current retry logic may be insufficient to actually address this scenario in practice.&lt;/p&gt;</comment>
                            <comment id="2955965" author="pavithra.vetriselvan" created="Mon, 9 Mar 2020 22:41:26 +0000"  >&lt;p&gt;Hmm, I see. The reconfig doesn&apos;t cause a state transition, so the node will continue to report itself as primary. &lt;/p&gt;

&lt;p&gt;Your comment helps explain why we didn&apos;t run into this issue with rollback dropping snapshots. We kill any in progress reads before transitioning to rollback and fail with &quot;InterruptedDueToReplStateChange.&quot; We also don&apos;t allow any new reads during this state.&lt;/p&gt;

&lt;p&gt;I did not realize that the drivers only retry once, that&apos;s definitely a good point. The read should &lt;em&gt;eventually&lt;/em&gt; succeed if we retry enough, but isn&apos;t guaranteed to &lt;em&gt;immediately&lt;/em&gt; succeed upon one retry.&lt;/p&gt;

&lt;p&gt;I&apos;m curious, what is the user expected to do when receiving a &quot;ReadConcernMajorityNotAvailableYet&quot; error?&lt;/p&gt;</comment>
                            <comment id="2955871" author="shane.harvey" created="Mon, 9 Mar 2020 22:12:20 +0000"  >&lt;blockquote&gt;&lt;p&gt;&#160;The node should eventually be able to update the committed snapshot through heartbeats (2 second interval), so the read will eventually succeed.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;If a read fails with ReadConcernMajorityNotAvailableYet does that mean the node is in an unknown SDAM state? (Ie, does the primary stop reporting itself as primary in isMaster responses?)&lt;/p&gt;

&lt;p&gt;If the answer is no, then it seems like the retry will most likely immediately proceed (without blocking in server selection) and fail with the same error. If this is the case then it seems like retrying simply delays the error. Note that drivers only retry once.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10620">
                    <name>Issue split</name>
                                            <outwardlinks description="split to">
                                        <issuelink>
            <issuekey id="2487014">JAVA-5224</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2486982">CXX-2775</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487000">GODRIVER-3030</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487023">NODE-5718</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487041">PHPLIB-1295</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487046">RUBY-3339</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2486979">CDRIVER-4752</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487029">MOTOR-1200</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487035">PYTHON-4016</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2487051">RUST-1786</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2486990">CSHARP-4825</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </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;&lt;b&gt;Summary of necessary driver changes&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Add ReadConcernMajorityNotAvailableYet to the list of retryable reads.&lt;/li&gt;
	&lt;li&gt;See C Driver implementation for reference: &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/pull/1484&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/pull/1484&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Commits for syncing spec/prose tests&lt;/b&gt; &lt;br/&gt;
&lt;em&gt;(and/or refer to an existing language POC if needed)&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/pull/1479/files&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/specifications/pull/1479/files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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-4752'>CDRIVER-4752</a>
    </td>
    <td>Done</td>
    <td class='hasFixVersion'>1.26.0</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CXX-2775'>CXX-2775</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/CSHARP-4825'>CSHARP-4825</a>
    </td>
    <td>Scheduled</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/GODRIVER-3030'>GODRIVER-3030</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/JAVA-5224'>JAVA-5224</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/NODE-5718'>NODE-5718</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/MOTOR-1200'>MOTOR-1200</a>
    </td>
    <td>Duplicate</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PYTHON-4016'>PYTHON-4016</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>4.7</td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/PHPLIB-1295'>PHPLIB-1295</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUBY-3339'>RUBY-3339</a>
    </td>
    <td>Backlog</td>
    <td class=''></td>
  </tr>
  <tr>
    <td class='key'>
      <a href='https://jira.mongodb.org/browse/RUST-1786'>RUST-1786</a>
    </td>
    <td>Fixed</td>
    <td class='hasFixVersion'>2.8.0</td>
  </tr>
</table>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18362" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                        <customfieldname>Engineering Lead</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>kevin.albertson@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|hvwrdj:</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>Tue, 28 Nov 2023 00:00:00 +0000</customfieldvalue>

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