<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:28:14 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-31805] rollbackViaRefetchNoUUID fails if rollback occurs during upgrade</title>
                <link>https://jira.mongodb.org/browse/SERVER-31805</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;We allow rollbacks during upgrade since they run with the old rollback algorithm. rollbackViarefetchNoUUID cannot resync collections with UUIDs (see &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31599&quot; title=&quot;Only allow rollbackViaRefetchNoUUID method when in FCV 3.4&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31599&quot;&gt;&lt;del&gt;SERVER-31599&lt;/del&gt;&lt;/a&gt;), so this should occur during upgrade as well (though we do not have a repro of this exact case).&lt;/p&gt;</description>
                <environment></environment>
        <key id="454161">SERVER-31805</key>
            <summary>rollbackViaRefetchNoUUID fails if rollback occurs during upgrade</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</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="judah.schvimer@mongodb.com">Judah Schvimer</assignee>
                                    <reporter username="judah.schvimer@mongodb.com">Judah Schvimer</reporter>
                        <labels>
                            <label>bkp</label>
                    </labels>
                <created>Thu, 2 Nov 2017 16:03:09 +0000</created>
                <updated>Mon, 30 Oct 2023 23:10:49 +0000</updated>
                            <resolved>Tue, 14 Nov 2017 23:25:55 +0000</resolved>
                                                    <fixVersion>3.6.0-rc5</fixVersion>
                    <fixVersion>3.7.1</fixVersion>
                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="1725907" author="xgen-internal-githook" created="Tue, 14 Nov 2017 23:24:08 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Judah Schvimer&apos;, &apos;username&apos;: &apos;judahschvimer&apos;, &apos;email&apos;: &apos;judah@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31805&quot; title=&quot;rollbackViaRefetchNoUUID fails if rollback occurs during upgrade&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31805&quot;&gt;&lt;del&gt;SERVER-31805&lt;/del&gt;&lt;/a&gt; rollbackViaRefetchNoUUID resyncs uuids correctly&lt;/p&gt;

&lt;p&gt;(cherry picked from commit aa8b6f7657450d537cc14a77371dcd8742018a28)&lt;br/&gt;
Branch: v3.6&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/a31a62ebd947b338c101aaaac78f185bf9d4153e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/a31a62ebd947b338c101aaaac78f185bf9d4153e&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1725889" author="xgen-internal-githook" created="Tue, 14 Nov 2017 23:10:44 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Judah Schvimer&apos;, &apos;username&apos;: &apos;judahschvimer&apos;, &apos;email&apos;: &apos;judah@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31805&quot; title=&quot;rollbackViaRefetchNoUUID fails if rollback occurs during upgrade&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31805&quot;&gt;&lt;del&gt;SERVER-31805&lt;/del&gt;&lt;/a&gt; rollbackViaRefetchNoUUID resyncs uuids correctly&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/aa8b6f7657450d537cc14a77371dcd8742018a28&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/aa8b6f7657450d537cc14a77371dcd8742018a28&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1722692" author="xgen-internal-githook" created="Fri, 10 Nov 2017 16:36:51 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Judah Schvimer&apos;, &apos;username&apos;: &apos;judahschvimer&apos;, &apos;email&apos;: &apos;judah@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31805&quot; title=&quot;rollbackViaRefetchNoUUID fails if rollback occurs during upgrade&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31805&quot;&gt;&lt;del&gt;SERVER-31805&lt;/del&gt;&lt;/a&gt; set collection temp status correctly in rollbackViaRefetchNoUUID&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/743c2767692b98889d1ff8594ea1d75ee5a115db&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/743c2767692b98889d1ff8594ea1d75ee5a115db&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1722585" author="judah.schvimer" created="Fri, 10 Nov 2017 15:34:57 +0000"  >&lt;p&gt;To summarize a discussion with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=schwerin&quot; class=&quot;user-hover&quot; rel=&quot;schwerin&quot;&gt;schwerin&lt;/a&gt;, the above plan does not solve the case of rolling back during a downgrade. In that case the rollback node will be rolling back a collMod that removes a UUID. The rolling back node will not have a UUID and the sync source will, but there will be no collMod during recovering to add the UUID back. To fix this, if a rollback node sees that the sync source has a UUID but it does not, it will check if it is in the process of downgrading. If so, it will take the UUID from the sync source. &lt;/p&gt;

&lt;p&gt;There are three ways the UUID can be mismatched:&lt;br/&gt;
1. The rollback node has a UUID and the sync source does not. Either the rollback node is in the middle of upgrade, and it can just remove its UUID, or the sync source is in the middle of downgrade, and the rollback node will crash in recovering. This is handled by the original plan.&lt;br/&gt;
2. The rollback node does not have a UUID and the sync source does. Either the sync source is in upgrade and there will be a collMod during RECOVERING to add the UUID, or the rollback node is in downgrade (this case). Since we fail if the sync source downgrades during rollback, every collection can only have 1 UUID for the entirety of rollback. The rollback will be conducted by namespace, so assigning the remote UUID is safe during rollback. The ops in RECOVERING will either be applied by namespace or by UUID using the UUID we&apos;ll be assigning, so that should be safe as well.&lt;br/&gt;
3. The rollback node and the sync source have different UUIDs. This can only happen if the partition occurred mid-upgrade and the rollback node finished the upgrade and the sync source conducted its own separate upgrade. Simply removing the UUID is the safest way to get back to the common point, and we will definitely see a collMod during RECOVERING to fix it. &lt;/p&gt;</comment>
                            <comment id="1721549" author="xgen-internal-githook" created="Thu, 9 Nov 2017 15:41:08 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Judah Schvimer&apos;, &apos;username&apos;: &apos;judahschvimer&apos;, &apos;email&apos;: &apos;judah@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31805&quot; title=&quot;rollbackViaRefetchNoUUID fails if rollback occurs during upgrade&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31805&quot;&gt;&lt;del&gt;SERVER-31805&lt;/del&gt;&lt;/a&gt; Set local collection validation options correctly in rollbackViaRefetchNoUUID&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/54a3f40dcfbff57f46859ba0b88249e6008597ea&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/54a3f40dcfbff57f46859ba0b88249e6008597ea&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1720949" author="xgen-internal-githook" created="Wed, 8 Nov 2017 21:45:38 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Judah Schvimer&apos;, &apos;username&apos;: &apos;judahschvimer&apos;, &apos;email&apos;: &apos;judah@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-31805&quot; title=&quot;rollbackViaRefetchNoUUID fails if rollback occurs during upgrade&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-31805&quot;&gt;&lt;del&gt;SERVER-31805&lt;/del&gt;&lt;/a&gt; provide option to Cloner to preserve UUIDs&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/26a5d0070ba4a4b9f7e9a5b68f58a0fa75f9e6d3&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/26a5d0070ba4a4b9f7e9a5b68f58a0fa75f9e6d3&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1719686" author="greg.mckeon" created="Tue, 7 Nov 2017 19:57:15 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=judah.schvimer&quot; class=&quot;user-hover&quot; rel=&quot;judah.schvimer&quot;&gt;judah.schvimer&lt;/a&gt; can this be brought into sprint?&lt;/p&gt;</comment>
                            <comment id="1715877" author="judah.schvimer" created="Thu, 2 Nov 2017 19:51:48 +0000"  >&lt;p&gt;To summarize our discussion, one proposed solution is to fix rollbackViaRefetchNoUUID in two ways:&lt;br/&gt;
1. when rollback needs to clone a collection, clone it with the UUID from the sync source.&lt;br/&gt;
2. when rollback needs to resync metadata, resync it by namespace, and if the UUIDs do not match, remove the local UUID since a collMod or rename operation must exist on the other branch of history to account for it.&lt;/p&gt;</comment>
                            <comment id="1715871" author="schwerin" created="Thu, 2 Nov 2017 19:47:42 +0000"  >&lt;p&gt;We&apos;ll need to spend some time on a solution that doesn&apos;t require rollback to fail during fCV upgrade. Upgrade could run for a while, and some node is going to lost an election during one somewhere.&lt;/p&gt;</comment>
                            <comment id="1715819" author="judah.schvimer" created="Thu, 2 Nov 2017 19:10:03 +0000"  >&lt;p&gt;After discussion with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=william.schultz&quot; class=&quot;user-hover&quot; rel=&quot;william.schultz&quot;&gt;william.schultz&lt;/a&gt;, this looks serious. It seems like we should fail rollback if we are in a targetVersion when we begin rollback, possibly if we roll back a change to the fCV document (though there will be no UUID changes in the rollback so it&apos;s probably safe), and also if the sync source does any operation on the fCV document (if the sync source is mid-upgrade/downgrade at the common point, then the rolling back node will be too and fail earlier). While this is potentially a coarser grained solution than is required, it is difficult to think through all of the different cases we could be in and we have little test coverage of it.&lt;/p&gt;</comment>
                            <comment id="1715728" author="judah.schvimer" created="Thu, 2 Nov 2017 18:06:13 +0000"  >&lt;p&gt;rollbackViaRefetchNoUUID appears to also not handle resyncing UUIDs when it resyncs collection metadata. I think this could lead to bugs where UUIDs mismatched between nodes in a replica set.&lt;br/&gt;
If both nodes involved in the rollback upgrade on their branches of history with different UUIDs, then we will not make them in sync properly.&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="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="456421">SERVER-31881</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="459475">SERVER-31988</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="429072">SERVER-31146</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="409763">SERVER-30413</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="430110">SERVER-31189</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="446636">SERVER-31599</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="454078">SERVER-31799</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>11.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_12450" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Backport Requested</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15141"><![CDATA[v3.6]]></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>Thu, 2 Nov 2017 19:47:42 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 years, 13 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_14262" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>End date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 2 Nov 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, 13 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>0.0</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>greg.mckeon@mongodb.com</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|htj7xr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|htb04f:</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="1931">Repl 2017-11-13</customfieldvalue>
    <customfieldvalue id="1957">Repl 2017-12-04</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_14261" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 2 Nov 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|htiu1j:</customfieldvalue>

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