<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:52:37 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-19934] Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers</title>
                <link>https://jira.mongodb.org/browse/SERVER-19934</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;This bug &lt;b&gt;only&lt;/b&gt; affects config server replica set configurations, and cannot occur in 3.0, 2.6 or 2.4 series clusters.&lt;/p&gt;

&lt;p&gt;In a sharded cluster with CSRS config servers that is moving some chunk, C from a donor shard to a recipient shard,&lt;/p&gt;

&lt;p&gt;If the donor shard replica set primary node (or standalone node) crashes during the chunk migration critical section &lt;b&gt;after&lt;/b&gt; writing the chunk metadata changes to the config server,&lt;/p&gt;

&lt;p&gt;And some mongos that is not aware of the change to the chunk metadata tries to route a write for the donated chunk to the donor shard,&lt;/p&gt;

&lt;p&gt;And the new donor replica set primary node (or restarted standalone node) contacts a lagged CSRS secondary that has stale chunk information,&lt;/p&gt;

&lt;p&gt;Then the new donor node will accept the write even though it does not own the chunk, leading to a lost write.&lt;/p&gt;

&lt;p&gt;The problem is that the donor replica set does not remember that it is finishing a chunk migration across failovers and restarts, and also does not durably remember the minimum config server optime corresponding to its most recently completed metadata operation.&lt;/p&gt;</description>
                <environment></environment>
        <key id="225497">SERVER-19934</key>
            <summary>Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers</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="9">Done</resolution>
                                        <assignee username="kaloian.manassiev@mongodb.com">Kaloian Manassiev</assignee>
                                    <reporter username="schwerin@mongodb.com">Andy Schwerin</reporter>
                        <labels>
                    </labels>
                <created>Thu, 13 Aug 2015 17:39:14 +0000</created>
                <updated>Wed, 3 Apr 2019 15:17:35 +0000</updated>
                            <resolved>Wed, 7 Oct 2015 22:37:20 +0000</resolved>
                                                    <fixVersion>3.2.0-rc0</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="1094521" author="schwerin" created="Fri, 20 Nov 2015 18:23:09 +0000"  >&lt;p&gt;It might suffice to cover the altered backup and restore procedures as per &lt;a href=&quot;https://jira.mongodb.org/browse/DOCS-6597&quot; title=&quot;Update documented sharded cluster backup and restore procedures for CSRS&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DOCS-6597&quot;&gt;&lt;del&gt;DOCS-6597&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="1068061" author="spencer" created="Thu, 22 Oct 2015 17:13:10 +0000"  >&lt;p&gt;Needs documentation explaining the sharding state recovery mechanism and how and why one might disable it.&lt;/p&gt;

&lt;p&gt;A user summary would allow this ticket to be linked to by the docs to help explain the motivation of what we&apos;re fixing with this recovery mechanism&lt;/p&gt;</comment>
                            <comment id="1054710" author="xgen-internal-githook" created="Wed, 7 Oct 2015 22:35:03 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;kaloianm&apos;, u&apos;name&apos;: u&apos;Kaloian Manassiev&apos;, u&apos;email&apos;: u&apos;kaloian.manassiev@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19934&quot; title=&quot;Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19934&quot;&gt;&lt;del&gt;SERVER-19934&lt;/del&gt;&lt;/a&gt; Sharding config minOpTime recovery&lt;/p&gt;

&lt;p&gt;Adds a framework to record incomplete sharding metadata change operations,&lt;br/&gt;
which can be recovered at startup or transition to primary.&lt;/p&gt;

&lt;p&gt;This version of the framework is blocking in that it cannot be interrupted&lt;br/&gt;
until completed.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/cc5788013eebbbd71e87581f3bb16532ab463ef0&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/cc5788013eebbbd71e87581f3bb16532ab463ef0&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1054709" author="xgen-internal-githook" created="Wed, 7 Oct 2015 22:35:02 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;kaloianm&apos;, u&apos;name&apos;: u&apos;Kaloian Manassiev&apos;, u&apos;email&apos;: u&apos;kaloian.manassiev@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19934&quot; title=&quot;Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19934&quot;&gt;&lt;del&gt;SERVER-19934&lt;/del&gt;&lt;/a&gt; Move system namespaces to NamespaceString&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/6e2fa8f483088bbbbf8dfe4575907a82d7488e08&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/6e2fa8f483088bbbbf8dfe4575907a82d7488e08&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1054708" author="xgen-internal-githook" created="Wed, 7 Oct 2015 22:35:01 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;kaloianm&apos;, u&apos;name&apos;: u&apos;Kaloian Manassiev&apos;, u&apos;email&apos;: u&apos;kaloian.manassiev@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19934&quot; title=&quot;Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19934&quot;&gt;&lt;del&gt;SERVER-19934&lt;/del&gt;&lt;/a&gt; waitForWriteConcern should take write concern parameter&lt;/p&gt;

&lt;p&gt;That way sub-operations, which need to wait on a specific write concern,&lt;br/&gt;
which might be different than the one of the entire operation don&apos;t need&lt;br/&gt;
to change the OperationContext.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/9ba3877df2a0734fbf2148c7c16ca18bdf7d4bfb&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/9ba3877df2a0734fbf2148c7c16ca18bdf7d4bfb&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1040269" author="xgen-internal-githook" created="Tue, 22 Sep 2015 21:12:19 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;kaloianm&apos;, u&apos;name&apos;: u&apos;Kaloian Manassiev&apos;, u&apos;email&apos;: u&apos;kaloian.manassiev@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19934&quot; title=&quot;Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19934&quot;&gt;&lt;del&gt;SERVER-19934&lt;/del&gt;&lt;/a&gt; Fix usage of ShardRegistry before sharding is initialized&apos;&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/e95a0838de334600dca1322914601b4b8404667b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/e95a0838de334600dca1322914601b4b8404667b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1040139" author="xgen-internal-githook" created="Tue, 22 Sep 2015 19:12:53 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;kaloianm&apos;, u&apos;name&apos;: u&apos;Kaloian Manassiev&apos;, u&apos;email&apos;: u&apos;kaloian.manassiev@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19934&quot; title=&quot;Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19934&quot;&gt;&lt;del&gt;SERVER-19934&lt;/del&gt;&lt;/a&gt; Begin the implementation of chunk move as a state machine&lt;/p&gt;

&lt;p&gt;This change introduces the ChunkMoveOperationState which represents a&lt;br/&gt;
state machine that drives the execution of a single chunk move operation.&lt;br/&gt;
At this stage, it only implements the critical section phase.&lt;/p&gt;

&lt;p&gt;There are no functional changes.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/ae5617b20202aea3bd6cde64a1758f2d17e5b93a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/ae5617b20202aea3bd6cde64a1758f2d17e5b93a&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1034113" author="xgen-internal-githook" created="Fri, 18 Sep 2015 12:56:19 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;kaloianm&apos;, u&apos;name&apos;: u&apos;Kaloian Manassiev&apos;, u&apos;email&apos;: u&apos;kaloian.manassiev@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19934&quot; title=&quot;Ill-timed crash at end of chunk migration can lead to lost writes when using replica sets as config servers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19934&quot;&gt;&lt;del&gt;SERVER-19934&lt;/del&gt;&lt;/a&gt; Move moveChunk command to separate source files&lt;/p&gt;

&lt;p&gt;No functional changes.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/53ad6b9d513542fa344e401a5dd9e6f2a27232ac&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/53ad6b9d513542fa344e401a5dd9e6f2a27232ac&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1026730" author="renctan" created="Thu, 10 Sep 2015 20:25:37 +0000"  >&lt;p&gt;Attached test.js that demonstrates this bug. Also attached test.diff to show were to inject the new failpoint and workaround &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19855&quot; title=&quot;Operations that convey shard version information must include a minimum optime&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19855&quot;&gt;&lt;del&gt;SERVER-19855&lt;/del&gt;&lt;/a&gt; and &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-20298&quot; title=&quot;Less strict configdb checking for config repl set&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-20298&quot;&gt;&lt;del&gt;SERVER-20298&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="1019624" author="spencer" created="Tue, 1 Sep 2015 17:22:15 +0000"  >&lt;p&gt;Assigning to Randolph to write a jstest repro.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10320">
                    <name>Documented</name>
                                                                <inwardlinks description="is documented by">
                                        <issuelink>
            <issuekey id="235710">DOCS-6435</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="234028">SERVER-20889</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="235394">SERVER-21033</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="233545">SERVER-20824</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="89484" name="test.diff" size="3203" author="randolph@mongodb.com" created="Thu, 10 Sep 2015 20:22:48 +0000"/>
                            <attachment id="89483" name="test.js" size="4357" author="randolph@mongodb.com" created="Thu, 10 Sep 2015 20:22:48 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>10.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.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>Tue, 1 Sep 2015 17:22:15 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        8 years, 12 weeks, 5 days 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>false</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>kay.kim@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            8 years, 12 weeks, 5 days ago
                        </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>schwerin@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>kaloian.manassiev@mongodb.com</customfieldvalue>
            <customfieldvalue>randolph@mongodb.com</customfieldvalue>
            <customfieldvalue>spencer@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrkxiv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hre91z:</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="621">Sharding 8 08/28/15</customfieldvalue>
    <customfieldvalue id="637">Sharding 9 (09/18/15)</customfieldvalue>
    <customfieldvalue id="685">Sharding A (10/09/15)</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_11861" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>User Summary</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="11857"><![CDATA[Requested]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrlk4v:</customfieldvalue>

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