<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:26:31 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-31275] Causal Consistency with secondary reads is broken by chunk migration commit</title>
                <link>https://jira.mongodb.org/browse/SERVER-31275</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Detailed description to follow.&lt;/p&gt;

&lt;p&gt;Because donor shard secondaries do not block access to the donated chunk during the period of time when the primary is waiting for the config server to acknowledge the chunk migration commit message, they may serve reads of stale data after the recipient shard has accepted the donated chunk and taken writes to it. In the jargon of the sharding team, because donor shard secondaries do not observe the &quot;chunk migration commit critical section&quot;, they may serve reads of documents owned by the recipient shard during the time between the primary sending the chunk commit message to the config server and the primary subsequently refreshing its routing table.&lt;/p&gt;</description>
                <environment></environment>
        <key id="433277">SERVER-31275</key>
            <summary>Causal Consistency with secondary reads is broken by chunk migration commit</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="dianna.hohensee@mongodb.com">Dianna Hohensee</assignee>
                                    <reporter username="dianna.hohensee@mongodb.com">Dianna Hohensee</reporter>
                        <labels>
                    </labels>
                <created>Tue, 26 Sep 2017 21:12:56 +0000</created>
                <updated>Mon, 30 Oct 2023 23:13:19 +0000</updated>
                            <resolved>Wed, 8 Nov 2017 14:45:39 +0000</resolved>
                                                    <fixVersion>3.6.0-rc4</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>9</watches>
                                                                                                                <comments>
                            <comment id="1720341" author="dianna.hohensee" created="Wed, 8 Nov 2017 14:51:13 +0000"  >&lt;p&gt;This also fixed the config.cache.collection OpObserver hooks such that they actually ONLY run on secondaries. Originally &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31713&quot; title=&quot;Persisted routing table refreshes cause in-memory routing table invalidations on primaries and secondaries, but should only do so on secondaries&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31713&quot;&gt;&lt;del&gt;SERVER-31713&lt;/del&gt;&lt;/a&gt; was going to fix that, but this fix ended up depending on running on secondaries &amp;#8211; primary would invariant.&lt;/p&gt;</comment>
                            <comment id="1720331" author="xgen-internal-githook" created="Wed, 8 Nov 2017 14:43:39 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Dianna Hohensee&apos;, &apos;username&apos;: &apos;DiannaHohensee&apos;, &apos;email&apos;: &apos;dianna.hohensee@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31275&quot; title=&quot;Causal Consistency with secondary reads is broken by chunk migration commit&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31275&quot;&gt;&lt;del&gt;SERVER-31275&lt;/del&gt;&lt;/a&gt; Ensure causal consistency guarantees on secondaries during chunk migration commits, and fully invalidate metadata.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/1df38e15d137719462b3609f7c45d5cdce253f7b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/1df38e15d137719462b3609f7c45d5cdce253f7b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1715734" author="dianna.hohensee" created="Thu, 2 Nov 2017 18:09:12 +0000"  >&lt;p&gt;Through inspection, found a safe secondary reads bug, where secondaries receive new metadata and invalidate the CatalogCache, but not the active CollectionMetadata, so the secondary will continue to service stale requests without reloading. This will be fixed in this patch, as the new functionality swallows up the bug.&lt;/p&gt;</comment>
                            <comment id="1702634" author="dianna.hohensee" created="Wed, 18 Oct 2017 15:14:21 +0000"  >&lt;p&gt;Final conclusion after discussion: flag is sent to the secondary (local write probably suffices) on entering critical section, secondary invalidates the routing table on receipt, then when the secondary does refresh it must contact the primary to refresh, at which point the primary will block the forceRoutingTableRefresh command on the critical section.&lt;/p&gt;</comment>
                            <comment id="1688289" author="dianna.hohensee" created="Tue, 3 Oct 2017 19:59:24 +0000"  >&lt;p&gt;Option 1: extend critical section to secondaries, only in the case of causal consistency&apos;s no-op write to the shard primary from a secondary &amp;#8211; i.e., causal consistency is the only process that waits on the critical section on secondaries.&lt;br/&gt;
Option 2: causal consistency&apos;s no-op write the shard primary sends nss and must wait behind the critical section flag.&lt;/p&gt;</comment>
                            <comment id="1683426" author="dianna.hohensee" created="Wed, 27 Sep 2017 17:44:22 +0000"  >&lt;p&gt;The shard primary sets and unsets a minOpTimeUpdaters value before and after the migration critical section. afterClusterTime could ensure that the secondary has everything the primary has and then we could check the minOpTimeUpdaters value to check for migrations.&lt;/p&gt;

&lt;p&gt;The time of the write will be covered by the time resulting from the config server write, so anything with that cluster time would pull in the shard change to a secondary.&lt;/p&gt;

&lt;p&gt;This is effectively a critical section flag for the secondaries, but collection ambiguous.&lt;/p&gt;

&lt;p&gt;But this is annoyingly ambiguous about which collection is in the critical section on the primary. Should keep in mind that there will be more than one migration allowed to run on a shard at once in the future.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="450910">SERVER-31713</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="423797">SERVER-30957</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </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>2.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, 18 Oct 2017 15:28:12 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 years, 14 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></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_14262" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>End date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 27 Sep 2017 00:00:00 +0000</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>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 years, 14 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.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>dianna.hohensee@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|htfsev:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hraiu7:</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_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1927">Sharding 2017-10-23</customfieldvalue>
    <customfieldvalue id="1956">Sharding 2017-11-13</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_14261" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 26 Sep 2017 00:00:00 +0000</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|htfei7:</customfieldvalue>

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