<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:37:29 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-78115] Shard primaries must commit a majority write before using new routing information from the config server</title>
                <link>https://jira.mongodb.org/browse/SERVER-78115</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;In &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-30797&quot; title=&quot;Shard primaries must commit a majority write before using updated chunk routing tables&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-30797&quot;&gt;&lt;del&gt;SERVER-30797&lt;/del&gt;&lt;/a&gt;, a majority write was added to the refresh path on primaries after fetching new routing information from the config server. This write ensured that the node which fetched the routing information was actually the majority primary, preventing incorrect filtering information from being applied in split brain scenarios.&lt;/p&gt;

&lt;p&gt;This write was removed in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-35092&quot; title=&quot;ShardServerCatalogCacheLoader should have a timeout waiting for read concern&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-35092&quot;&gt;&lt;del&gt;SERVER-35092&lt;/del&gt;&lt;/a&gt; since it was believed to be unnecessary and was causing stalls when a refresh happened without a majority of nodes available.&lt;/p&gt;

&lt;p&gt;However, the split brain scenario for which the majority write was added is still a problem, and since the removal of that write, it is possible to hit this again. The scenario is as follows&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Suppose we have a 2 shard cluster with 3 nodes per shard where (min, 0) is on shard 0 and (0, max) is on shard 1 with one document in each chunk&lt;/li&gt;
	&lt;li&gt;Now a network partition separates the primary of shard 0 from the secondaries and one of those secondaries steps up (creating a split brain scenario)&lt;/li&gt;
	&lt;li&gt;Chunk (0, max) is moved back to shard 0&lt;/li&gt;
	&lt;li&gt;A mongoS that hasn&apos;t learned about the new primary on shard 0 routes a majority read to the old primary&lt;/li&gt;
	&lt;li&gt;The old primary (who still believes itself to be primary) fetches the new routing information from the config&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In this case, the old primary will respond to the majority read using the newest filtering information but without ever having seen the chunk migration.&lt;/p&gt;

&lt;p&gt;This can also affect secondaries who refresh via the node that believes itself to be primary, causing their filtering information to be ahead of the data they have.&lt;/p&gt;

&lt;p&gt;The solution here is to add back in the majority noop write to the SSCCL. It will ensure that if new filtering information is found, it can only be used and sent to secondaries by the actual primary of the replica set.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2368831">SERVER-78115</key>
            <summary>Shard primaries must commit a majority write before using new routing information from the config server</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="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="13201">Fixed</resolution>
                                        <assignee username="allison.easton@mongodb.com">Allison Easton</assignee>
                                    <reporter username="allison.easton@mongodb.com">Allison Easton</reporter>
                        <labels>
                    </labels>
                <created>Thu, 15 Jun 2023 07:40:46 +0000</created>
                <updated>Fri, 2 Feb 2024 18:23:50 +0000</updated>
                            <resolved>Tue, 22 Aug 2023 12:18:56 +0000</resolved>
                                    <version>3.6.23</version>
                    <version>4.0.28</version>
                    <version>4.2.24</version>
                    <version>7.1.0-rc0</version>
                    <version>6.0.6</version>
                    <version>4.4.22</version>
                    <version>5.0.18</version>
                    <version>7.0.0-rc3</version>
                                    <fixVersion>7.1.0-rc0</fixVersion>
                    <fixVersion>7.0.3</fixVersion>
                    <fixVersion>6.0.12</fixVersion>
                    <fixVersion>5.0.23</fixVersion>
                                                        <votes>0</votes>
                                    <watches>8</watches>
                                                                                                                <comments>
                            <comment id="5830172" author="xgen-internal-githook" created="Mon, 30 Oct 2023 11:25:20 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Allison Easton&apos;, &apos;email&apos;: &apos;allison.easton@mongodb.com&apos;, &apos;username&apos;: &apos;allisoneaston&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-78115&quot; title=&quot;Shard primaries must commit a majority write before using new routing information from the config server&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-78115&quot;&gt;&lt;del&gt;SERVER-78115&lt;/del&gt;&lt;/a&gt; Shard primaries must commit a majority write before using new routing information from the config server&lt;/p&gt;

&lt;p&gt;(cherry picked from commit bd44ce15ffa79d6234221ece8320a9f1775b8042)&lt;br/&gt;
Branch: v5.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/76a3cd802008d52d40a0c138fd74f04ad07d8043&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/76a3cd802008d52d40a0c138fd74f04ad07d8043&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5754843" author="xgen-internal-githook" created="Thu, 5 Oct 2023 09:57:02 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Allison Easton&apos;, &apos;email&apos;: &apos;allison.easton@mongodb.com&apos;, &apos;username&apos;: &apos;allisoneaston&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-78115&quot; title=&quot;Shard primaries must commit a majority write before using new routing information from the config server&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-78115&quot;&gt;&lt;del&gt;SERVER-78115&lt;/del&gt;&lt;/a&gt; Shard primaries must commit a majority write before using new routing information from the config server&lt;/p&gt;

&lt;p&gt;(cherry picked from commit bd44ce15ffa79d6234221ece8320a9f1775b8042)&lt;br/&gt;
Branch: v6.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/8b0a1ea41575fa384c3de09c7e3db208bba42928&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/8b0a1ea41575fa384c3de09c7e3db208bba42928&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5715101" author="xgen-internal-githook" created="Tue, 19 Sep 2023 15:39:51 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Allison Easton&apos;, &apos;email&apos;: &apos;allison.easton@mongodb.com&apos;, &apos;username&apos;: &apos;allisoneaston&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-78115&quot; title=&quot;Shard primaries must commit a majority write before using new routing information from the config server&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-78115&quot;&gt;&lt;del&gt;SERVER-78115&lt;/del&gt;&lt;/a&gt; Shard primaries must commit a majority write before using new routing information from the config server&lt;/p&gt;

&lt;p&gt;(cherry picked from commit bd44ce15ffa79d6234221ece8320a9f1775b8042)&lt;br/&gt;
Branch: v7.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/fec65ddc5c7cb7b6c90efc5fd0eece6be1892a8c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/fec65ddc5c7cb7b6c90efc5fd0eece6be1892a8c&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5649745" author="xgen-internal-githook" created="Tue, 22 Aug 2023 12:17:55 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Allison Easton&apos;, &apos;email&apos;: &apos;allison.easton@mongodb.com&apos;, &apos;username&apos;: &apos;allisoneaston&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-78115&quot; title=&quot;Shard primaries must commit a majority write before using new routing information from the config server&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-78115&quot;&gt;&lt;del&gt;SERVER-78115&lt;/del&gt;&lt;/a&gt; Shard primaries must commit a majority write before using new routing information from the config server&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/bd44ce15ffa79d6234221ece8320a9f1775b8042&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/bd44ce15ffa79d6234221ece8320a9f1775b8042&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5599428" author="xgen-internal-githook" created="Fri, 28 Jul 2023 19:32:41 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Wenbin Zhu&apos;, &apos;email&apos;: &apos;wenbin.zhu@mongodb.com&apos;, &apos;username&apos;: &apos;WenbinZhu&apos;}
&lt;p&gt;Message: Revert &quot;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-78115&quot; title=&quot;Shard primaries must commit a majority write before using new routing information from the config server&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-78115&quot;&gt;&lt;del&gt;SERVER-78115&lt;/del&gt;&lt;/a&gt; Shard primaries must commit a majority write before using new routing information from the config server&quot;&lt;/p&gt;

&lt;p&gt;This reverts commit e80686185de1633cc657ea2c00e842dc4b402470.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/c584baf01c3678fbbfe4585cb7366357d48ac59b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/c584baf01c3678fbbfe4585cb7366357d48ac59b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5594610" author="xgen-internal-githook" created="Thu, 27 Jul 2023 07:43:03 +0000"  >&lt;p&gt;Author: &lt;/p&gt;
{&apos;name&apos;: &apos;Allison Easton&apos;, &apos;email&apos;: &apos;allison.easton@mongodb.com&apos;, &apos;username&apos;: &apos;allisoneaston&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-78115&quot; title=&quot;Shard primaries must commit a majority write before using new routing information from the config server&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-78115&quot;&gt;&lt;del&gt;SERVER-78115&lt;/del&gt;&lt;/a&gt; Shard primaries must commit a majority write before using new routing information from the config server&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/e80686185de1633cc657ea2c00e842dc4b402470&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/e80686185de1633cc657ea2c00e842dc4b402470&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="2379464">SERVER-78505</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2419706">SERVER-80183</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2407166">SERVER-79609</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                        <issuelink>
            <issuekey id="2539088">SERVER-84623</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2433444">SERVER-80712</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is caused by">
                                        <issuelink>
            <issuekey id="546479">SERVER-35092</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="419472">SERVER-30797</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2404250">SERVER-79483</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="456463" name="repro.js" size="2286" author="allison.easton@mongodb.com" created="Thu, 15 Jun 2023 08:21:43 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25578"><![CDATA[v7.0]]></customfieldvalue>
    <customfieldvalue key="23470"><![CDATA[v6.0]]></customfieldvalue>
    <customfieldvalue key="21777"><![CDATA[v5.0]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 26 Jul 2023 10:30:21 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        14 weeks, 2 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/SERVER-78505'>SERVER-78505</a></s>, <s><a href='https://jira.mongodb.org/browse/SERVER-80183'>SERVER-80183</a></s>]]></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_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </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>silvia.surroca@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            14 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>152.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>allison.easton@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i2dz27:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i21map:</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_22250" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Special Downgrade Instructions Required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23343"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="7189">Sharding EMEA 2023-06-26</customfieldvalue>
    <customfieldvalue id="7190">Sharding EMEA 2023-07-10</customfieldvalue>
    <customfieldvalue id="7191">Sharding EMEA 2023-07-24</customfieldvalue>
    <customfieldvalue id="7192">Sharding EMEA 2023-08-07</customfieldvalue>
    <customfieldvalue id="7193">Sharding EMEA 2023-08-21</customfieldvalue>
    <customfieldvalue id="7194">Sharding EMEA 2023-09-04</customfieldvalue>

                        </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|i2dl7j:</customfieldvalue>

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