<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:52:15 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-428] Support new ReadPreference semantics, deprecate SlaveOK</title>
                <link>https://jira.mongodb.org/browse/JAVA-428</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;h1&gt;&lt;a name=&quot;ReadBehavior&quot;&gt;&lt;/a&gt;Read Behavior&lt;/h1&gt;

&lt;h2&gt;&lt;a name=&quot;ReadPreference&quot;&gt;&lt;/a&gt;Read Preference&lt;/h2&gt;

&lt;p&gt;Each driver needs some way of setting this value.&lt;/p&gt;

&lt;p&gt;There are three read preferences:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;em&gt;primary&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;secondary&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;[tag1, tag2, ..., tagN]&lt;/tt&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;This document will use the names above, but these levels should be members of an enum or consts in your driver, e.g.:&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;ReadPreference.primary&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;ReadPreference.secondary&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;ReadPreference.tags&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;As &lt;tt&gt;tags&lt;/tt&gt; is an array and the other two are scalars, some langauges may need to handle this a little differently than others.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;%7B%7BsetReadPreference%28primary%29%7D%7D&quot;&gt;&lt;/a&gt;&lt;tt&gt;setReadPreference(primary)&lt;/tt&gt;&lt;/h2&gt;

&lt;p&gt;Default. Sends all reads to primary.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;%7B%7BsetReadPreference%28secondary%29%7D%7D&quot;&gt;&lt;/a&gt;&lt;tt&gt;setReadPreference(secondary)&lt;/tt&gt;&lt;/h2&gt;

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

&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Bucket &lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt; Number of nodes &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1 (0 - 10ms) &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 2 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 2 (10 - 100ms) &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 3 (100 - 1000ms) &lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; 3 &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;In this case, we&apos;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&apos;ll probably want to add a ReadPreference class (like WriteConcern).&lt;/p&gt;

&lt;p&gt;Eventually, there should be a &quot;secondaryOnly&quot; 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;

&lt;h2&gt;&lt;a name=&quot;%7B%7BsetReadPreference%28%5C%29%7D%7D&quot;&gt;&lt;/a&gt;&lt;tt&gt;setReadPreference({&quot;server&quot; : &quot;A&quot;, &quot;dc&quot; : &quot;ny&quot;, &quot;type&quot; : &quot;backup&quot;})&lt;/tt&gt;&lt;/h2&gt;

&lt;p&gt;Attempt to read from a server tagged with &lt;tt&gt;&quot;server&quot; : &quot;A&quot;&lt;/tt&gt;.  If there are no readable servers with &lt;tt&gt;&quot;server&quot; : &quot;A&quot;&lt;/tt&gt;, attempt to read from servers with &lt;tt&gt;&quot;dc&quot; : &quot;ny&quot;&lt;/tt&gt;, etc.&lt;/p&gt;

&lt;p&gt;If there are multiple servers matching a tag, choose a secondary using the same bucket strategy as described in the &lt;tt&gt;setReadPreference(secondary)&lt;/tt&gt; section above.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;ReadbytagsImplementation&quot;&gt;&lt;/a&gt;Read-by-tags Implementation&lt;/h3&gt;

&lt;p&gt;On connection, drivers should call isMaster, which will include a field containing all the tags for the node in question.&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;{&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    tags : {tag1 : loc1, tag2 : loc2, ..., tagP : locP}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;h3&gt;&lt;a name=&quot;Errorchecking&quot;&gt;&lt;/a&gt;Error checking&lt;/h3&gt;

&lt;p&gt;The drivers should check that the tags actually match potentially readable servers in &lt;tt&gt;setReadPreference&lt;/tt&gt;.  If the only tag the driver got from the database was &quot;foo&quot;, &lt;tt&gt;setReadPreference&lt;/tt&gt; should not allow people to use &quot;bar&quot;, &quot;baz&quot;, &quot;bat&quot;, etc. as tags.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Settingreadpreferencewithsharding&quot;&gt;&lt;/a&gt;Setting read preference with sharding&lt;/h3&gt;

&lt;p&gt;This will probably be a meta option (e.g., {&lt;tt&gt;$tags : {&quot;x&quot;:&quot;foo&quot;,&quot;y&quot;:&quot;bar&quot;,&quot;z&quot;:&quot;baz&quot;}, $query : {...&lt;/tt&gt;}}, but this has not been decided yet.  &lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;Connections&quot;&gt;&lt;/a&gt;Connections&lt;/h2&gt;

&lt;p&gt;Drivers can connect to a single node or to a replica set.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Connectingtoasinglenode&quot;&gt;&lt;/a&gt;Connecting to a single node&lt;/h3&gt;

&lt;p&gt;Drivers should provide the option to connect to a single node by providing a simple Connection class.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Connectingtoareplicaset&quot;&gt;&lt;/a&gt;Connecting to a replica set&lt;/h3&gt;

&lt;p&gt;Driver should connect to a replica set via a specific ReplicaSetConnection class. Users should be able to connect to a replica set by providing one or more seed nodes. The replica set name should be required.&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Replicasetconnectionbehavior&quot;&gt;&lt;/a&gt;Replica set connection behavior&lt;/h4&gt;

&lt;p&gt;When readPreference is set to &quot;secondary&quot;: if no primary exists, but the connection succeeds, then the connection becomes read-only until a primary comes back online. In this case, any attempt to write, particularly a non-safe write, must raise an exception.&lt;/p&gt;

&lt;p&gt;If readPreference is set to a set of tags and no primary exists, then the connection becomes read-only. In this case, any attempt to write, particularly a non-safe write, must raise an exception.&lt;/p&gt;</description>
                <environment></environment>
        <key id="21727">JAVA-428</key>
            <summary>Support new ReadPreference semantics, deprecate SlaveOK</summary>
                <type id="2" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14711&amp;avatarType=issuetype">New Feature</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="9">Done</resolution>
                                        <assignee username="brendan">Brendan W. McAdams</assignee>
                                    <reporter username="brendan">Brendan W. McAdams</reporter>
                        <labels>
                            <label>SERVER_V2</label>
                    </labels>
                <created>Wed, 31 Aug 2011 15:09:16 +0000</created>
                <updated>Wed, 19 Oct 2016 14:17:25 +0000</updated>
                            <resolved>Fri, 4 Nov 2011 21:43:21 +0000</resolved>
                                                    <fixVersion>2.7</fixVersion>
                                                        <votes>1</votes>
                                    <watches>3</watches>
                                                                                                                                                            <comments>
                            <comment id="67793" author="auto" created="Sun, 20 Nov 2011 22:01:45 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;scotthernandez&apos;, u&apos;name&apos;: u&apos;Scott Hernandez&apos;, u&apos;email&apos;: u&apos;scotthernandez@gmail.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt;: enable tagging on ReadPrefs&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/14ae90be2964156e032739e158303a3dc1940bfa&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/14ae90be2964156e032739e158303a3dc1940bfa&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="65706" author="remonvv" created="Wed, 9 Nov 2011 18:48:31 +0000"  >&lt;p&gt;Just curious, but is there any particular reason you cannot pass a ReadPreference instance with finds rather than just allowing developers to set the value for the collection instance? The DBCollection.find(..) method signatures are becoming increasingly inconsistent.&lt;/p&gt;</comment>
                            <comment id="65577" author="auto" created="Tue, 8 Nov 2011 23:41:08 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;agirbal&apos;, u&apos;name&apos;: u&apos;agirbal&apos;, u&apos;email&apos;: u&apos;antoine@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt;: be consistent for setter&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/1101a2dc4d8e07b6f09cddd827ad992fef8a4547&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/1101a2dc4d8e07b6f09cddd827ad992fef8a4547&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="65576" author="auto" created="Tue, 8 Nov 2011 23:41:07 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;agirbal&apos;, u&apos;name&apos;: u&apos;agirbal&apos;, u&apos;email&apos;: u&apos;antoine@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt;: read pref not set on cursor&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/6441b5da66a5f755fc421420c771b6d2a7534e15&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/6441b5da66a5f755fc421420c771b6d2a7534e15&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="62690" author="auto" created="Wed, 26 Oct 2011 06:33:57 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;agirbal&apos;, u&apos;name&apos;: u&apos;agirbal&apos;, u&apos;email&apos;: u&apos;antoine@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt;: Support new ReadPreference semantics, deprecate SlaveOK&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/3e96c2f055df6b47d7259a4eb7b142e5435d3a01&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/3e96c2f055df6b47d7259a4eb7b142e5435d3a01&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="62678" author="antoine" created="Wed, 26 Oct 2011 04:52:27 +0000"  >&lt;p&gt;slaveOk was not working anymore.&lt;br/&gt;
Adding fix but we should dbl check and add test.&lt;/p&gt;</comment>
                            <comment id="62357" author="auto" created="Mon, 24 Oct 2011 21:51:10 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt;: Disable read by tags until mongos supports it.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/f9180ed4a26256193a458d2e6b3caaff4678b8c5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/f9180ed4a26256193a458d2e6b3caaff4678b8c5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="62166" author="brendan" created="Mon, 24 Oct 2011 13:46:21 +0000"  >&lt;p&gt;Read by tag needs to be disabled for 2.7&lt;/p&gt;</comment>
                            <comment id="61580" author="auto" created="Thu, 20 Oct 2011 10:38:44 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Cull exceess overloaded methods specifically the ones with ReadPreference&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/40743ca51f8ce1997e9cb49e7bf0271274a0bdb6&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/40743ca51f8ce1997e9cb49e7bf0271274a0bdb6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="61154" author="auto" created="Tue, 18 Oct 2011 16:21:19 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Fully wired suppor for reading by Tags; tested and validated for correct behavior&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/75f1b83ea6c2860c6c949034edac7e3f474a4326&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/75f1b83ea6c2860c6c949034edac7e3f474a4326&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="59435" author="auto" created="Mon, 10 Oct 2011 10:35:50 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Pass basic readPreference information down to the API layer; doesn&apos;t support dealing w/ tags yet just &quot;Primary or Secondary&quot;&lt;/li&gt;
	&lt;li&gt;We are not yet implementing the proposed &quot;bucketing&quot; behavior for pings, but using the existing ping selection of secondary code from the existing library&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/fe574ad80225df8614abddb92efef2415164fcbe&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/fe574ad80225df8614abddb92efef2415164fcbe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="52948" author="auto" created="Thu, 8 Sep 2011 14:21:42 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Like WriteConcern, each read method now takes an optional ReadPreference arg, defaulting to default otherwise&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/9e25f381ce7847e5df29ff82f97626786d213a0f&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/9e25f381ce7847e5df29ff82f97626786d213a0f&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="52944" author="auto" created="Thu, 8 Sep 2011 14:02:38 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Added toStrings for clarification to Concrete ReadPreference instances&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/12b603c3181b4bd81ce1e1e0cf0aec597e6f6cf8&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/12b603c3181b4bd81ce1e1e0cf0aec597e6f6cf8&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="52943" author="auto" created="Thu, 8 Sep 2011 13:53:22 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Set and get ReadPreference on Mongo, DB and DBCollection; not yet instrumented to actual behavior.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/583475cd6b7159239b669bffef5ef45555ce2969&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/583475cd6b7159239b669bffef5ef45555ce2969&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="52938" author="auto" created="Thu, 8 Sep 2011 13:22:20 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Deprecated slaveOK with documentation recommending a move to ReadPreference.SECONDARY&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/ad0da35c2acc45209dedb7ad65bb5711b2363fdc&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/ad0da35c2acc45209dedb7ad65bb5711b2363fdc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="52937" author="auto" created="Thu, 8 Sep 2011 13:22:16 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;login&apos;: u&apos;bwmcadams&apos;, u&apos;name&apos;: u&apos;Brendan W. McAdams&apos;, u&apos;email&apos;: u&apos;brendan@10gen.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-428&quot; title=&quot;Support new ReadPreference semantics, deprecate SlaveOK&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-428&quot;&gt;&lt;del&gt;JAVA-428&lt;/del&gt;&lt;/a&gt; - Support new ReadPreference semantics, deprecate SlaveOK&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Added ReadPreference class with SECONDARY, PRIMARY and taggable modes&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-java-driver/commit/59e7d67e946d56a637ab3c448a5aea08a44a431e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-java-driver/commit/59e7d67e946d56a637ab3c448a5aea08a44a431e&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="23979">JAVA-457</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                            <subtask id="23745">JAVA-450</subtask>
                            <subtask id="23979">JAVA-457</subtask>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10011"><![CDATA[Minor Change]]></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|hrhbq7:</customfieldvalue>

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