<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:52:19 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>[JAVA-450] Implement Proposed Bucketing Behavior for MongoDB 2.0 Replica Sets</title>
                <link>https://jira.mongodb.org/browse/JAVA-450</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;The first version of 2.0 Replica Set Support doesn&apos;t implement the proposed &quot;ping bucket&quot; code.  We should evaluate implementing this for a future release.&lt;/p&gt;</description>
                <environment></environment>
        <key id="23745">JAVA-450</key>
            <summary>Implement Proposed Bucketing Behavior for MongoDB 2.0 Replica Sets</summary>
                <type id="5" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14716&amp;avatarType=issuetype">Sub-task</type>
                            <parent id="21727">JAVA-428</parent>
                                    <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="antoine">Antoine Girbal</assignee>
                                    <reporter username="brendan">Brendan W. McAdams</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 Oct 2011 10:48:23 +0000</created>
                <updated>Wed, 19 Oct 2016 14:17:26 +0000</updated>
                            <resolved>Wed, 7 Mar 2012 14:04:19 +0000</resolved>
                                    <version>2.7</version>
                                                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="96346" author="jeff.yemin" created="Wed, 7 Mar 2012 14:04:19 +0000"  >&lt;p&gt;We&apos;ve decided against the bucking algorithm in favor of the algorithm already implemented by the Java driver.&lt;/p&gt;</comment>
                            <comment id="73672" author="brendan" created="Fri, 16 Dec 2011 03:09:27 +0000"  >&lt;p&gt;New system for choosing secondaries, as outlined in the docs for the&lt;br/&gt;
ReadPreference/WriteConcern spec.&lt;/p&gt;

&lt;p&gt;setReadPreference(secondary)&lt;/p&gt;

&lt;p&gt;Implementation detail: automatically create a set of buckets that grow&lt;br/&gt;
exponentially. Pick secondaries randomly from nodes in the nearest bucket.&lt;br/&gt;
Use the &#8220;ping&#8221; command for testing ping times. Do this every five seconds,&lt;br/&gt;
using a separate socket, with very low timeouts.&lt;br/&gt;
BucketNumber of nodes1 (0 - 10ms)22 (10 - 100ms)13 (100 - 1000ms)3&lt;/p&gt;

&lt;p&gt;In this case, we&#8217;d pick randomly from the nodes in the 0-10ms bucket. If&lt;br/&gt;
users need more sophisticated read preferences, let them use tags.&lt;/p&gt;

&lt;p&gt;If no secondary is available, fall back on reading from the primary.&lt;/p&gt;

&lt;p&gt;In Java, we&#8217;ll probably want to add a ReadPreference class (like&lt;br/&gt;
WriteConcern).&lt;/p&gt;

&lt;p&gt;Eventually, there should be a &#8220;secondaryOnly&#8221; option, too, that will only&lt;br/&gt;
read from a secondary and return an error if only the primary is available.&lt;br/&gt;
This is not necessary for 2.0, though.&lt;/p&gt;


</comment>
                            <comment id="61181" author="antoine" created="Tue, 18 Oct 2011 17:47:10 +0000"  >&lt;p&gt;I dont quite get this bucketing system.&lt;br/&gt;
Are the ranges always the same?&lt;br/&gt;
If you have 1 server at 9ms and 3 servers at 12ms, will it use only the former?&lt;br/&gt;
The current driver behavior of &quot;group within a certain latency delay of closest server&quot; seems like a better heuristic to use all servers within the closest datacenter.&lt;br/&gt;
The latency delay can even be relative to the latency.&lt;/p&gt;
</comment>
                            <comment id="61173" author="brendan" created="Tue, 18 Oct 2011 17:25:00 +0000"  >&lt;p&gt;New guidelines for choosing a secondary as outlined in the spec for the new 2.0 options:&lt;/p&gt;

&lt;p&gt;setReadPreference(secondary)&lt;br/&gt;
Implementation detail: automatically create a set of buckets that grow exponentially. Pick secondaries randomly from nodes in the nearest bucket. Use the &#8220;ping&#8221; command for testing ping times. Do this every five seconds, using a separate socket, with very low timeouts.&lt;/p&gt;

&lt;p&gt;Bucket	 Number of nodes&lt;br/&gt;
1 (0 - 10ms)	 2&lt;br/&gt;
2 (10 - 100ms)	 1&lt;br/&gt;
3 (100 - 1000ms)	 3&lt;br/&gt;
In this case, we&#8217;d pick randomly from the nodes in the 0-10ms bucket. If users need more sophisticated read preferences, let them use tags.&lt;/p&gt;

&lt;p&gt;If no secondary is available, fall back on reading from the primary.&lt;/p&gt;

&lt;p&gt;In Java, we&#8217;ll probably want to add a ReadPreference class (like WriteConcern).&lt;/p&gt;

&lt;p&gt;Eventually, there should be a &#8220;secondaryOnly&#8221; option, too, that will only read from a secondary and return an error if only the primary is available. This is not necessary for 2.0, though.&lt;/p&gt;
</comment>
                            <comment id="61166" author="antoine" created="Tue, 18 Oct 2011 16:59:06 +0000"  >&lt;p&gt;what is the ping bucket system?&lt;br/&gt;
Is that a new feature that was decided on for all drivers?&lt;br/&gt;
I thought we were going to use tagging instead.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                        <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_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrhbmn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>14684</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>