<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:36:18 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-55376] Reconfig can roll back committed writes in PSA sets</title>
                <link>https://jira.mongodb.org/browse/SERVER-55376</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;ol&gt;
	&lt;li&gt;Consider a PSA set in config C0.&lt;/li&gt;
	&lt;li&gt;We then reconfig to C1 where the &quot;S&quot; node has votes:0.&lt;/li&gt;
	&lt;li&gt;The &quot;S&quot; node goes down and falls behind as the Primary accepts and commits many writes.&lt;/li&gt;
	&lt;li&gt;The &quot;S&quot; node restarts.&lt;/li&gt;
	&lt;li&gt;Now the DBA reconfigures the &quot;S&quot; node to have votes:1 again in C2.&lt;/li&gt;
	&lt;li&gt;The &quot;S&quot; node gets elected with the arbiter&apos;s vote, but without all of the writes the original primary committed while &quot;S&quot; was down.&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
        <key id="1654435">SERVER-55376</key>
            <summary>Reconfig can roll back committed writes in PSA sets</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="xuerui.fa@mongodb.com">Xuerui Fa</assignee>
                                    <reporter username="judah.schvimer@mongodb.com">Judah Schvimer</reporter>
                        <labels>
                    </labels>
                <created>Fri, 19 Mar 2021 19:28:48 +0000</created>
                <updated>Sun, 29 Oct 2023 21:55:59 +0000</updated>
                            <resolved>Wed, 12 May 2021 17:48:12 +0000</resolved>
                                                    <fixVersion>4.4.11</fixVersion>
                    <fixVersion>5.0.0-rc0</fixVersion>
                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>16</watches>
                                                                                                                <comments>
                            <comment id="4196270" author="xgen-internal-githook" created="Wed, 17 Nov 2021 21:18:48 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;XueruiFa&apos;, &apos;email&apos;: &apos;xuerui.fa@mongodb.com&apos;, &apos;username&apos;: &apos;XueruiFa&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-55376&quot; title=&quot;Reconfig can roll back committed writes in PSA sets&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-55376&quot;&gt;&lt;del&gt;SERVER-55376&lt;/del&gt;&lt;/a&gt;: Ensure reconfig cannot roll back committed writes in PSA sets&lt;/p&gt;

&lt;p&gt;(cherry picked from commit b5261275423215d567599f3d9862416f09e05aa2)&lt;br/&gt;
Branch: v4.4&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/78925b6e570e2df349fe52c04d2f062c58bc7ba8&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/78925b6e570e2df349fe52c04d2f062c58bc7ba8&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4084281" author="xgen-internal-githook" created="Fri, 24 Sep 2021 21:20:54 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Vishnu Kaushik&apos;, &apos;email&apos;: &apos;vishnu.kaushik@mongodb.com&apos;, &apos;username&apos;: &apos;kauboy26&apos;}
&lt;p&gt;Message: Revert &quot;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-55376&quot; title=&quot;Reconfig can roll back committed writes in PSA sets&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-55376&quot;&gt;&lt;del&gt;SERVER-55376&lt;/del&gt;&lt;/a&gt;: Ensure reconfig cannot roll back committed writes in PSA sets&quot;&lt;/p&gt;

&lt;p&gt;This reverts commit 25d41df0440ea5bc136f255f980816f506c0d72a.&lt;br/&gt;
Branch: v4.4&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/2f1d6f958ab17dc3fdc078883883674f111873f5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/2f1d6f958ab17dc3fdc078883883674f111873f5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4077694" author="xgen-internal-githook" created="Wed, 22 Sep 2021 15:30:04 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;XueruiFa&apos;, &apos;email&apos;: &apos;xuerui.fa@mongodb.com&apos;, &apos;username&apos;: &apos;XueruiFa&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-55376&quot; title=&quot;Reconfig can roll back committed writes in PSA sets&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-55376&quot;&gt;&lt;del&gt;SERVER-55376&lt;/del&gt;&lt;/a&gt;: Ensure reconfig cannot roll back committed writes in PSA sets&lt;/p&gt;

&lt;p&gt;(cherry picked from commit b5261275423215d567599f3d9862416f09e05aa2)&lt;br/&gt;
Branch: v4.4&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/25d41df0440ea5bc136f255f980816f506c0d72a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/25d41df0440ea5bc136f255f980816f506c0d72a&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3769521" author="xgen-internal-githook" created="Wed, 12 May 2021 16:21:53 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;XueruiFa&apos;, &apos;email&apos;: &apos;xuerui.fa@mongodb.com&apos;, &apos;username&apos;: &apos;XueruiFa&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-55376&quot; title=&quot;Reconfig can roll back committed writes in PSA sets&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-55376&quot;&gt;&lt;del&gt;SERVER-55376&lt;/del&gt;&lt;/a&gt;: Ensure reconfig cannot roll back committed writes in PSA sets&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/b5261275423215d567599f3d9862416f09e05aa2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/b5261275423215d567599f3d9862416f09e05aa2&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3746672" author="samy.lanka" created="Thu, 29 Apr 2021 14:59:25 +0000"  >&lt;p&gt;I&apos;ve filed &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-56481&quot; title=&quot;Update TLA+ spec for reconfig to model arbiters&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-56481&quot;&gt;SERVER-56481&lt;/a&gt; to separately track the work to update the TLA+ spec.&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="1883038">SERVER-60217</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="1702305">SERVER-56670</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10320">
                    <name>Documented</name>
                                                                <inwardlinks description="is documented by">
                                        <issuelink>
            <issuekey id="1712974">DOCS-14446</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1812407">MONGOSH-891</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1683308">MONGOSH-702</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1708740">SERVER-56801</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1714715">SERVER-56919</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="1696040">SERVER-56481</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>5.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_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="18953"><![CDATA[v4.4]]></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>Mon, 22 Mar 2021 18:18:10 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 12 weeks 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-60217'>SERVER-60217</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_17052" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Downstream Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>This ticket added a check to the reconfig procedure that prevents a reconfig to a PSA set that might result in rolling back committed writes. Specifically, given a reconfig to a PSA set, if the user is trying to add a new node, or if the user is modifying an existing non-voting node to make it a voter, we check to make sure the node is not electable and has priority 0 in the new config. If it doesn&amp;#39;t, we fail the reconfig.&lt;br/&gt;
&lt;br/&gt;
If the users&amp;#39; reconfig ends up failing because of this check, we should have a Docs page that will guide them in their next steps. The correct procedure involves two reconfigs:&lt;br/&gt;
&lt;br/&gt;
First, do a reconfig to give the added/modified node {votes: 1, priority: 0}&lt;br/&gt;
Second, do another reconfig to give the added/modified node {votes: 1, priority: 1}&lt;br/&gt;
&lt;br/&gt;
Both reconfigs should succeed, and the user should end up in their desired PSA config after this procedure.&lt;br/&gt;
&lt;br/&gt;
Users may also use the new rs.reconfigForPSASet() function in the mongo shell, which will issue both reconfigs automatically. It takes in 3 parameters:&lt;br/&gt;
&lt;br/&gt;
memberIndex: the index of the node being added/modified&lt;br/&gt;
cfg: the desired end config&lt;br/&gt;
opts: any options to run with both reconfig commands&lt;br/&gt;
&lt;br/&gt;
It is important that users should only use this function if they encounter the check added in this ticket. We will link users to the Docs page in a follow-up ticket, after it has been created.&lt;br/&gt;
&lt;br/&gt;
Thank you, and let me know if I can answer any questions!&lt;br/&gt;
&lt;br/&gt;
In a follow-up ticket, we will link to the DOCS page</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16942"><![CDATA[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>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 12 weeks 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>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>samy.lanka@mongodb.com</customfieldvalue>
            <customfieldvalue>xuerui.fa@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hz0eyn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hydt6v:</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="4798">Repl 2021-04-05</customfieldvalue>
    <customfieldvalue id="4853">Repl 2021-04-19</customfieldvalue>
    <customfieldvalue id="4859">Repl 2021-05-17</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_17051" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Teams Impacted</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16944"><![CDATA[Docs]]></customfieldvalue>
    <customfieldvalue key="16946"><![CDATA[Triage and Release]]></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|hz017r:</customfieldvalue>

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