<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:56: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-40970] Intelligent &quot;load-aware&quot; loadbalancing mechanism for evenly distributing secondary reads</title>
                <link>https://jira.mongodb.org/browse/SERVER-40970</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;MongoDB drivers use a&#160;&lt;a href=&quot;https://docs.mongodb.com/manual/core/read-preference-mechanics/index.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Server Selection Algorithm&lt;/a&gt;&#160;to choose which replica set member to use&#160;&lt;em&gt;(or, when connected to multiple mongos instances, which mongos instance to use)&lt;/em&gt;. For a&#160;&lt;b&gt;&lt;tt&gt;secondary&lt;/tt&gt;&lt;/b&gt;&#160;read preference, the server selection process is as follows:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;The driver assembles a list of eligible secondary members.&#160;&lt;a href=&quot;https://docs.mongodb.com/manual/core/read-preference/#replica-set-read-preference-max-staleness&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;maxStalenessSeconds&lt;/a&gt;&#160;and&#160;&lt;a href=&quot;https://docs.mongodb.com/manual/tutorial/configure-replica-set-tag-sets/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;tag sets&lt;/a&gt;&#160;can further restrict the eligibility of the members, as&#160;&lt;a href=&quot;https://docs.mongodb.com/manual/reference/read-preference/index.html#secondary&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;documented here&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;If the list of eligible members is not empty, the driver determines which eligible member is the &#8220;closest&#8221; (i.e. the member with the lowest average network round-trip-time) and calculates a latency window by adding the average round-trip-time of this &#8220;closest&#8221; server and the&#160;&lt;a href=&quot;https://docs.mongodb.com/manual/reference/connection-string/index.html#urioption.localThresholdMS&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;localThresholdMS&lt;/a&gt;. The driver uses this latency window to pare down the list of eligible members to those members that fall within this window.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;&lt;em&gt;From this list of eligible members&lt;/em&gt;&lt;/b&gt;&#160;that fall within the latency window, the driver&#160;&lt;b&gt;&lt;em&gt;&lt;ins&gt;randomly&lt;/ins&gt; chooses an eligible member&lt;/em&gt;&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The above process is&#160;&lt;a href=&quot;https://docs.mongodb.com/manual/core/read-preference-mechanics/index.html#read-preference-for-replica-sets&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;documented here&lt;/a&gt;. As can be seen here, this process&#160;&lt;b&gt;&lt;em&gt;does not&lt;/em&gt;&lt;/b&gt;&#160;use even-load-balancing as a criteria for selection of a secondary.&#160;&lt;b&gt;&lt;em&gt;In other words, the secondary selection process does not &lt;ins&gt;evenly&lt;/ins&gt; distribute the incoming queries equally among available secondaries.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;This is an enhancement request to add an intelligent &lt;b&gt;&quot;load-aware&quot;&lt;/b&gt;&#160;&#160;&lt;b&gt;loadbalancing&lt;/b&gt; mechanism in the Server Selection Algorithm, which will &lt;b&gt;evenly distribute the &lt;em&gt;load&lt;/em&gt;&#160;among secondaries&lt;/b&gt;. Specifically, the mechanism will take into account the current load on each secondary and distribute the query-&lt;em&gt;workload&lt;/em&gt; among them accordingly, so that each secondary has approximately the same amount of &lt;b&gt;&lt;em&gt;workload&lt;/em&gt;&lt;/b&gt; (and not necessarily the same number of read-requests).&lt;/p&gt;</description>
                <environment></environment>
        <key id="756956">SERVER-40970</key>
            <summary>Intelligent &quot;load-aware&quot; loadbalancing mechanism for evenly distributing secondary reads</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="11262" iconUrl="https://jira.mongodb.org/images/icons/statuses/generic.png" description="">Investigating</status>
                    <statusCategory id="4" key="indeterminate" colorName="inprogress"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="shameek.ray@mongodb.com">Shameek Ray</assignee>
                                    <reporter username="harshad.dhavale@mongodb.com">Harshad Dhavale</reporter>
                        <labels>
                    </labels>
                <created>Thu, 2 May 2019 20:43:08 +0000</created>
                <updated>Thu, 16 Feb 2023 02:53:08 +0000</updated>
                                                                            <component>Networking</component>
                                        <votes>4</votes>
                                    <watches>22</watches>
                                                                                                                <comments>
                            <comment id="2935091" author="garaudy.etienne" created="Wed, 4 Mar 2020 20:08:39 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=kelly.lewis&quot; class=&quot;user-hover&quot; rel=&quot;kelly.lewis&quot;&gt;kelly.lewis&lt;/a&gt; Move it back to open... Will investigate after we&apos;ve GA&apos;d 4.4.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="756988">DRIVERS-864</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                                        </outwardlinks>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_13552" key="com.go2group.jira.plugin.crm:crm_generic_field">
                        <customfieldname>Case</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[[5002K00000dXsvQQAS, 5002K00000ekguiQAA, 5002K00000fN8EgQAK, 5002K00000uylZlQAI, 5006R00001r94ifQAA]]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 6 May 2019 16:27:11 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 49 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_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            3 years, 49 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>garaudy.etienne@mongodb.com</customfieldvalue>
            <customfieldvalue>harshad.dhavale@mongodb.com</customfieldvalue>
            <customfieldvalue>shameek.ray@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|huxnjr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hun213:</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="2960">Service Arch 2019-05-20</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|hux9t3:</customfieldvalue>

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