<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:12:21 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-46758] setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic</title>
                <link>https://jira.mongodb.org/browse/SERVER-46758</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;I believe this bug goes back all the way back to the beginning of the setFCV framework. Therefore it will need to be backport&apos;ed.&lt;/p&gt;

&lt;p&gt;A setFCV cmd will change the FCV value twice: first to put FCV into upgrading / downgrading; then to put FCV into fully upgraded / fully downgraded. For each of these FCV writes, we wait for majority confirmation before proceeding.&lt;/p&gt;

&lt;p&gt;However, setFCV can be interrupted while waiting for majority write concern &amp;#8211; InterruptedDueToReplStateChange for example &amp;#8211; and roll back a step in FCV value. This manifested in test failures where the in-memory FCV value was found not to match the persisted FCV value: the persisted value had been rolled back, but the in-memory value was left unchanged by roll back. Recover to a stable timestamp wipes out writes back to the checkpoint and then plays writes forward from the oplog up to the desired point, so an FCV value change never goes through the OpObserver, even.&lt;/p&gt;

&lt;p&gt;I think it&#8217;s okay if rollback moves FCV from fully upgraded/downgraded to upgrading/downgrading because the user can simply rerun setFCV in the right direction and the logic is idempotent. This scenario is the same as if the server fails at any point in setFCV and setFCV is retried and we know it works.&lt;/p&gt;

&lt;p&gt;However, rolling back from upgrading/downgrading to fully downgraded/upgraded requires running the setFCV logic to make sure the rest of the server settings match the new FCV. And then I believe we must finish an upgrading/downgrading before we can move to downgrading/upgrading. Config servers will be their own special problem because their setFCV logic involves setting the shard servers first or last (I forget).&lt;/p&gt;</description>
                <environment></environment>
        <key id="1258872">SERVER-46758</key>
            <summary>setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic</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="jason.chan@mongodb.com">Jason Chan</assignee>
                                    <reporter username="dianna.hohensee@mongodb.com">Dianna Hohensee</reporter>
                        <labels>
                    </labels>
                <created>Tue, 10 Mar 2020 16:24:14 +0000</created>
                <updated>Sun, 29 Oct 2023 22:11:01 +0000</updated>
                            <resolved>Wed, 22 Apr 2020 22:00:37 +0000</resolved>
                                                    <fixVersion>4.0.20</fixVersion>
                    <fixVersion>4.2.8</fixVersion>
                    <fixVersion>4.4.0-rc4</fixVersion>
                    <fixVersion>4.7.0</fixVersion>
                                    <component>Upgrade/Downgrade</component>
                                        <votes>0</votes>
                                    <watches>10</watches>
                                                                                                                <comments>
                            <comment id="3185931" author="xgen-internal-githook" created="Tue, 2 Jun 2020 22:01:48 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jason Chan&apos;, &apos;email&apos;: &apos;jason.chan@10gen.com&apos;, &apos;username&apos;: &apos;jasonjhchan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46758&quot; title=&quot;setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46758&quot;&gt;&lt;del&gt;SERVER-46758&lt;/del&gt;&lt;/a&gt; In-memory FCV value should properly reflect the on-disk FCV after a rollback&lt;/p&gt;

&lt;p&gt;(cherry picked from commit aa527109a28bec0b6fe2763fce8a447ead0c02dd)&lt;br/&gt;
Branch: v4.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/2148b273b0bd531d6a89410298349556ccedfdd9&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/2148b273b0bd531d6a89410298349556ccedfdd9&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3157138" author="xgen-internal-githook" created="Mon, 1 Jun 2020 21:24:49 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jason Chan&apos;, &apos;email&apos;: &apos;jason.chan@10gen.com&apos;, &apos;username&apos;: &apos;jasonjhchan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46758&quot; title=&quot;setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46758&quot;&gt;&lt;del&gt;SERVER-46758&lt;/del&gt;&lt;/a&gt; In-memory FCV value should properly reflect the on-disk FCV after a rollback&lt;/p&gt;

&lt;p&gt;(cherry picked from commit aa527109a28bec0b6fe2763fce8a447ead0c02dd)&lt;br/&gt;
Branch: v4.2&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5f8ebd1f27e3dbfa27e75bac39ac6730a0b6719b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5f8ebd1f27e3dbfa27e75bac39ac6730a0b6719b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3156908" author="xgen-internal-githook" created="Mon, 1 Jun 2020 21:19:25 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jason Chan&apos;, &apos;email&apos;: &apos;jason.chan@10gen.com&apos;, &apos;username&apos;: &apos;jasonjhchan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46758&quot; title=&quot;setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46758&quot;&gt;&lt;del&gt;SERVER-46758&lt;/del&gt;&lt;/a&gt; In-memory FCV value should properly reflect the on-disk FCV after a rollback&lt;/p&gt;

&lt;p&gt;(cherry picked from commit aa527109a28bec0b6fe2763fce8a447ead0c02dd)&lt;br/&gt;
Branch: v4.2&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5f8ebd1f27e3dbfa27e75bac39ac6730a0b6719b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5f8ebd1f27e3dbfa27e75bac39ac6730a0b6719b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3156621" author="xgen-internal-githook" created="Mon, 1 Jun 2020 21:13:17 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jason Chan&apos;, &apos;email&apos;: &apos;jason.chan@10gen.com&apos;, &apos;username&apos;: &apos;jasonjhchan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46758&quot; title=&quot;setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46758&quot;&gt;&lt;del&gt;SERVER-46758&lt;/del&gt;&lt;/a&gt; In-memory FCV value should properly reflect the on-disk FCV after a rollback&lt;/p&gt;

&lt;p&gt;(cherry picked from commit aa527109a28bec0b6fe2763fce8a447ead0c02dd)&lt;br/&gt;
Branch: v4.2&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5f8ebd1f27e3dbfa27e75bac39ac6730a0b6719b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5f8ebd1f27e3dbfa27e75bac39ac6730a0b6719b&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3068062" author="xgen-internal-githook" created="Mon, 4 May 2020 20:42:04 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jason Chan&apos;, &apos;email&apos;: &apos;jason.chan@10gen.com&apos;, &apos;username&apos;: &apos;jasonjhchan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46758&quot; title=&quot;setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46758&quot;&gt;&lt;del&gt;SERVER-46758&lt;/del&gt;&lt;/a&gt; In-memory FCV value should properly reflect the on-disk FCV after a rollback&lt;/p&gt;

&lt;p&gt;(cherry picked from commit aa527109a28bec0b6fe2763fce8a447ead0c02dd)&lt;br/&gt;
Branch: v4.4&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/5d8474a6a9f376553d462ba8b9ba9df98024fe24&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/5d8474a6a9f376553d462ba8b9ba9df98024fe24&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3051887" author="xgen-internal-githook" created="Wed, 22 Apr 2020 21:22:45 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Jason Chan&apos;, &apos;email&apos;: &apos;jason.chan@10gen.com&apos;, &apos;username&apos;: &apos;jasonjhchan&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-46758&quot; title=&quot;setFCV can be interrupted before an FCV change is majority committed and rollback the FCV without running the setFCV server logic&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-46758&quot;&gt;&lt;del&gt;SERVER-46758&lt;/del&gt;&lt;/a&gt; In-memory FCV value should properly reflect the on-disk FCV after a rollback&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/aa527109a28bec0b6fe2763fce8a447ead0c02dd&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/aa527109a28bec0b6fe2763fce8a447ead0c02dd&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3045492" author="jason.chan" created="Fri, 17 Apr 2020 20:03:26 +0000"  >&lt;p&gt;I don&apos;t believe this bug exists in 3.6 because it looks like this behaviour is specific to RTT. In Rollback via refetch, we end up refetching the fcv document and doing an update, which will trigger the onInsertOrUpdate &lt;a href=&quot;https://github.com/mongodb/mongo/blob/2005f25eed7ed88fa698d9b800fe536bb0410ba4/src/mongo/db/commands/feature_compatibility_version.cpp#L350-L351&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt; and update the in-memory FCV on storage commit. &lt;/p&gt;

&lt;p&gt;I think this needs to be backported to v4.0 when we start using RTT.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                            <outwardlinks description="backported by">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="1001149">SERVER-44607</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1369545">SERVER-48541</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>7.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>
    <customfieldvalue key="16775"><![CDATA[v4.2]]></customfieldvalue>
    <customfieldvalue key="15640"><![CDATA[v4.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>Mon, 23 Mar 2020 17:34:06 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 36 weeks, 1 day 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_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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-1617</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>
                            3 years, 36 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>30.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>
            <customfieldvalue>jason.chan@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hx5z27:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hwtsin:</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="3768">Repl 2020-04-06</customfieldvalue>
    <customfieldvalue id="3769">Repl 2020-04-20</customfieldvalue>
    <customfieldvalue id="3881">Repl 2020-05-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|hx5lbj:</customfieldvalue>

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