<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:37:28 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-15254] replica set members should be able to replicate off members that don&apos;t build indexes</title>
                <link>https://jira.mongodb.org/browse/SERVER-15254</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Currently, if member &apos;A&apos; does not build indexes, then other members that do build indexes cannot replicate oplog data off of A. Here is why this is problematic. &lt;/p&gt;

&lt;p&gt;Suppose member &apos;A&apos; finds itself to be further ahead than all other members, because it was the only member to replicate data some data off the primary before the primary disappeared. Because other members cannot sync from A, other members cannot catch up to A. Also, because A is ahead of everyone else, A will veto every possible election of a new primary. You are stuck with a situation where no primary can be elected.&lt;/p&gt;

&lt;p&gt;Perhaps Member::syncable() should distinguish cases where we wish to replicate oplog data or do an initial sync. It makes sense for members that don&apos;t build indexes to be ineligible for being the source of an initial sync. However, for the reasons above, they should be allowed to be the source of oplog data during normal replication&lt;/p&gt;</description>
                <environment></environment>
        <key id="158065">SERVER-15254</key>
            <summary>replica set members should be able to replicate off members that don&apos;t build indexes</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="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-server-repl">Backlog - Replication Team</assignee>
                                    <reporter username="zardosht">Zardosht Kasheff</reporter>
                        <labels>
                    </labels>
                <created>Sat, 13 Sep 2014 17:55:34 +0000</created>
                <updated>Tue, 6 Dec 2022 05:01:32 +0000</updated>
                                                                            <component>Replication</component>
                                        <votes>1</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="722105" author="charlie.page@10gen.com" created="Thu, 18 Sep 2014 16:49:24 +0000"  >&lt;p&gt;The root of the issue is that a node which cannot be elected can acknowledge a write concern.  Only electable, data bearing nodes, should be part of a write concern as it is a necessary condition that if a node acknowledges a write it can fully represent that write in a consensus operation for the write concern to be meaningful.&lt;/p&gt;

&lt;p&gt;w:majority can still fail if the majority of the partition only contains unelected servers which are most current. A single buildIndexes = false node can prevent a primary/ force rollbacks (depending on what decision is made) if another electable node is not equally or greater current.&lt;/p&gt;</comment>
                            <comment id="718749" author="zardosht" created="Mon, 15 Sep 2014 13:59:46 +0000"  >&lt;p&gt;Hello Eric,&lt;br/&gt;
Technically, the issue would not be solved, because a majority of servers may have buildIndexes set to false and have some write that others do not. Realistically, that is not likely.&lt;/p&gt;

&lt;p&gt;But I think removing veto powers is problematic. Yes, majority write concern would still work, but practically any other replica set write concern that users may want will have problems. Suppose a write is written with REPLICA_SAFE. The user expects that as long as new elections involve all secondaries (and that only the old primary does not participate for some strange reason), the write survives. Without veto power, the only secondary to have acknowledged a write may not be able to stop an election that does not contain the write. A similar example is having three data centers with three members each, and using a write concern that states &quot;make sure the write makes it to two out of three data centers&quot;. Assuming two data centers (6 members) participate in an election, and only one member has the write, an election may rollback the write.&lt;/p&gt;

&lt;p&gt;This issue is related to &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-14885&quot; title=&quot;replica sets that disable chaining may have trouble electing a primary if members have different priorities&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-14885&quot;&gt;&lt;del&gt;SERVER-14885&lt;/del&gt;&lt;/a&gt; in that both have the same underlying problem: if member &apos;A&apos; can block member &apos;B&apos; from becoming primary, then either A or B ought to have the power to eventually become primary, likely by having be able to sync off the other. I realize arbiters throw a wrinkle in that statement, but that wrinkle only exists if there is some existing network partition that does not get resolved.&lt;/p&gt;</comment>
                            <comment id="718708" author="milkie" created="Mon, 15 Sep 2014 13:09:50 +0000"  >&lt;p&gt;Hi Zardosht.&lt;br/&gt;
If one were to swap out the current election mechanism with one that adhered to the Rules for Servers as presented in the Raft paper (which means no veto powers), would that solve this issue?&lt;/p&gt;</comment>
                            <comment id="718408" author="zardosht" created="Sat, 13 Sep 2014 20:34:29 +0000"  >&lt;p&gt;A note I forgot to add. I did not read the code to see how rollback would be affected, but there may be some subtlety there.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.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>Mon, 15 Sep 2014 13:09:50 +0000</customfieldvalue>

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


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_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>
                            9 years, 21 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-server-repl</customfieldvalue>
            <customfieldvalue>charlie.page@10gen.com</customfieldvalue>
            <customfieldvalue>milkie@mongodb.com</customfieldvalue>
            <customfieldvalue>zardosht</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrlnyn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrfpsv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>137564</customfieldvalue>
                        </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|hrizrb:</customfieldvalue>

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