<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:59:58 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-42243] Ban the combination of PV0 and enableMajorityReadConcern</title>
                <link>https://jira.mongodb.org/browse/SERVER-42243</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;enableMajorityReadConcern isn&apos;t supported in PV0. We should ban the combination on 3.4 and 3.6 for both reconfig to PV0 and startup with &quot;--enableMajorityReadConcern&quot;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="858794">SERVER-42243</key>
            <summary>Ban the combination of PV0 and enableMajorityReadConcern</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="2">Won&apos;t Fix</resolution>
                                        <assignee username="backlog-server-repl">Backlog - Replication Team</assignee>
                                    <reporter username="siyuan.zhou@mongodb.com">Siyuan Zhou</reporter>
                        <labels>
                    </labels>
                <created>Mon, 15 Jul 2019 23:21:53 +0000</created>
                <updated>Tue, 6 Dec 2022 02:53:57 +0000</updated>
                            <resolved>Mon, 2 Dec 2019 18:34:36 +0000</resolved>
                                    <version>3.4.23</version>
                                                    <component>Replication</component>
                                        <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="2570595" author="siyuan.zhou@10gen.com" created="Wed, 27 Nov 2019 17:35:19 +0000"  >&lt;p&gt;Talked with Eric, I agree &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=milkie&quot; class=&quot;user-hover&quot; rel=&quot;milkie&quot;&gt;milkie&lt;/a&gt;&apos;s proposal is the minimal change - Make PV0 omit enableMajorityReadConcern silently without any performance penalties. We need to call &lt;tt&gt;dropAllSnapshots&lt;/tt&gt; or &lt;tt&gt;_dropAllSnapshots_inlock&lt;/tt&gt; on transitioning to PV0.&lt;/p&gt;

&lt;p&gt;It turned out 3.6 already &lt;a href=&quot;https://github.com/mongodb/mongo/blob/204ab367a130a4fd2db1c54b02cd6a86e4e07f56/src/mongo/db/repl/replication_coordinator_impl.cpp#L3150&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;drops all snapshots on downgrade&lt;/a&gt;, but &lt;a href=&quot;https://github.com/mongodb/mongo/blob/2c1ef409e145a8adfb845415e17033de7ed170d7/src/mongo/db/repl/replication_coordinator_impl.cpp#L3009-L3023&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;3.4&lt;/a&gt; doesn&apos;t. Since 3.4&apos;s end of life is in 2020 January, I&apos;d suggest closing this issue as Won&apos;t Fix on 3.4. If we want to fix it, we also need to update the title of this ticket or file a new one.&lt;/p&gt;</comment>
                            <comment id="2338836" author="judah.schvimer" created="Tue, 23 Jul 2019 14:13:21 +0000"  >&lt;p&gt;Option (4) is, as this ticket was initially written:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;return an error for a reconfig that sets PV1 to PV0 when enableMajorityReadConcern is true for that node&lt;/li&gt;
	&lt;li&gt;fail to start up with enableMajorityReadConcern: true when in PV0&lt;/li&gt;
	&lt;li&gt;do nothing and maintain current non-ideal behavior if you receive a reconfig via heartbeat that sets PV1 to PV0 when enableMajorityReadConcern is true&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I suspect it isn&apos;t common for different nodes to have different enableMajorityReadConcern settings. Also I believe we already document that it&apos;s a bad combination. We could log a warning when a node receives a reconfig via hearbeat that sets PV1 to PV0 when enableMajorityReadConcern is true.&lt;/p&gt;

&lt;p&gt;Option (5) would be to not fail at all and just log warnings in all of these cases. &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=alyson.cabral&quot; class=&quot;user-hover&quot; rel=&quot;alyson.cabral&quot;&gt;alyson.cabral&lt;/a&gt;, is this what was originally requested?&lt;/p&gt;

&lt;p&gt;I worry about the risk involved with Options (1) and (3) landing in a dot release on what are already very stable branches. I also worry about the investment it will take for what I see as little gain. (2) feels like an undesirable user experience.&lt;/p&gt;</comment>
                            <comment id="2338582" author="milkie" created="Tue, 23 Jul 2019 12:49:02 +0000"  >&lt;p&gt;I&apos;m okay with (3), but you should be more precise.  Since only one of &quot;PV&quot; and &quot;read-concern-majority&quot; settings is actually changeable at runtime, what (3) really is is:&lt;br/&gt;
3. On a primary, return an error for a reconfigure that sets PV1 to PV0 when enableReadConcernMajority is true for that node.  &lt;br/&gt;
On a non-primary, when receiving a reconfigure that changes pv1 to pv0 and the node is set to readConcernMajority:true, pretend that readConcernMajority is set to false.  Important note: &lt;em&gt;the code already does this today&lt;/em&gt;.  The problem is that in the transition from enableReadConcernMajority:true to false, we do not clean up the existing named snapshots.  (There could be other problems as well.)&lt;/p&gt;

&lt;p&gt;Since option 3 is simply an extension of option 1 and is thus more work, for a seemingly small benefit, I prefer option 1.&lt;/p&gt;</comment>
                            <comment id="2337576" author="siyuan.zhou@10gen.com" created="Mon, 22 Jul 2019 20:57:48 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=milkie&quot; class=&quot;user-hover&quot; rel=&quot;milkie&quot;&gt;milkie&lt;/a&gt;, we discussed this on standup meeting. Some options:&lt;br/&gt;
1) Make PV0 omit enableMajorityReadConcern silently without any performance penalties as you suggested.&lt;br/&gt;
2) Ban the combination on primary and on startup and invariant on secondaries. A misconfigure on a mixed enableMajorityReadConcern flags may crash the whole replset, but the testing surface is much smaller.&lt;br/&gt;
3) Ban the combination on primary and omit it on secondaries as in (1). Users will be surprised on restart later.&lt;/p&gt;

&lt;p&gt;A crazier idea I just came up with: (2) + propagate this &quot;enableMajorityReadConcern&quot; setting through heartbeats and check them on primary. This is on best-effort basis and should catch most of the issues but requires a real surgery in old versions that we really want to avoid.&lt;/p&gt;

&lt;p&gt;I prefer option (3).&lt;/p&gt;</comment>
                            <comment id="2336997" author="ratika.gandhi" created="Mon, 22 Jul 2019 17:24:50 +0000"  >&lt;p&gt;Siyuan will discuss with Storage team and Aly.&#160;&lt;/p&gt;</comment>
                            <comment id="2328652" author="milkie" created="Tue, 16 Jul 2019 13:29:15 +0000"  >&lt;p&gt;How are you going to enforce this ban?&lt;br/&gt;
In particular, if a secondary is running pv1 and eMRC:true, and it receives an oplog entry to switch to pv0, what is the proposed behavior?&lt;/p&gt;</comment>
                            <comment id="2327957" author="siyuan.zhou@10gen.com" created="Tue, 16 Jul 2019 02:38:26 +0000"  >&lt;p&gt;No we don&apos;t. The shown&#160;readConcernMajorityOpTime under PV0 advances but has term -1.&lt;/p&gt;</comment>
                            <comment id="2327940" author="alyson.cabral" created="Tue, 16 Jul 2019 02:16:00 +0000"  >&lt;p&gt;Do we warn against this today?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="333026">SERVER-27124</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="566788">SERVER-35941</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>8.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25128"><![CDATA[Replication]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 16 Jul 2019 02:16:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 11 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_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>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            4 years, 11 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>alyson.cabral@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-repl</customfieldvalue>
            <customfieldvalue>milkie@mongodb.com</customfieldvalue>
            <customfieldvalue>judah.schvimer@mongodb.com</customfieldvalue>
            <customfieldvalue>ratika.gandhi@mongodb.com</customfieldvalue>
            <customfieldvalue>siyuan.zhou@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hvemxb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hv3p13:</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="3106">Repl 2019-08-12</customfieldvalue>
    <customfieldvalue id="3200">Repl 2019-08-26</customfieldvalue>
    <customfieldvalue id="3201">Repl 2019-09-09</customfieldvalue>
    <customfieldvalue id="3202">Repl 2019-09-23</customfieldvalue>
    <customfieldvalue id="3260">Repl 2019-10-07</customfieldvalue>
    <customfieldvalue id="3261">Repl 2019-10-21</customfieldvalue>
    <customfieldvalue id="3303">Repl 2019-11-04</customfieldvalue>
    <customfieldvalue id="3304">Repl 2019-11-18</customfieldvalue>
    <customfieldvalue id="3436">Repl 2019-12-02</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|hve96n:</customfieldvalue>

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