<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:52:45 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-647] stale read issue in a ReplicaSet setup</title>
                <link>https://jira.mongodb.org/browse/JAVA-647</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;We are having stale read issue in a ReplicaSet setup.  The use cases are below.  What is the best way to resolve these issues?&lt;/p&gt;

&lt;p&gt;First, some info with our setup.  We have multiple servers which are all talking to mongo.&lt;/p&gt;

&lt;p&gt;ReplicaSet: 1 Primary and 2 Secondary&lt;br/&gt;
Java Driver version: 2.9.0&lt;br/&gt;
Driver Options: slaveOk = true, WriteConcern=WriteConcern.Safe&lt;/p&gt;

&lt;p&gt;gokoSet:PRIMARY&amp;gt; db.serverBuildInfo()&lt;br/&gt;
{&lt;br/&gt;
	&quot;version&quot; : &quot;1.8.5&quot;,&lt;br/&gt;
	&quot;gitVersion&quot; : &quot;403c8dadcd56f68dcbe06013ecbfac67b32a22ac&quot;,&lt;br/&gt;
	&quot;sysInfo&quot; : &quot;Linux ip-10-110-9-236 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41&quot;,&lt;br/&gt;
	&quot;bits&quot; : 64,&lt;br/&gt;
	&quot;debug&quot; : false,&lt;br/&gt;
	&quot;maxBsonObjectSize&quot; : 16777216,&lt;br/&gt;
	&quot;ok&quot; : 1&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;Case#1 - When two of the same API calls execute very close to each other.  Here&apos;s some pseudo code.&lt;/p&gt;

&lt;p&gt;createRoomApi(name) {&lt;br/&gt;
	Room room = insertRoomIntoDB(name);&lt;br/&gt;
	if(room != null) &lt;/p&gt;
{
		return room;
	}
&lt;p&gt;	else &lt;/p&gt;
{
		room = findRoomByName(name);
	}

&lt;p&gt;	return room;&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;insertRoomIntoDB(name) {&lt;br/&gt;
	Room room = null;&lt;br/&gt;
	try &lt;/p&gt;
{
		// Insert into db
		room = db.rooms.insert(name);
		return room;
	}
&lt;p&gt;	catch (MongoException.DuplicateKey) &lt;/p&gt;
{
		log(&quot;duplicate room name: &quot; + name);
	}
&lt;p&gt;	// if MongoException.DuplicateKey, returns null&lt;br/&gt;
	return room;&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;API call #1 - CreateRoom(&quot;MyRoom&quot;)&lt;br/&gt;
Room object returned - new room created successfully&lt;/p&gt;

&lt;p&gt;API call #2 - CreateRoom(&quot;MyRoom&quot;)&lt;br/&gt;
No room object returned - Room was created in call #1, but cannot find room because it tried to read from a slave and inserted room is not replicated yet.&lt;/p&gt;

&lt;p&gt;Case #2 - We have a transactional operation within the one API call.&lt;/p&gt;

&lt;p&gt;ObjectA is parent of ObjectB is a parent of ObjectC&lt;/p&gt;

&lt;p&gt;Insert Object A &lt;br/&gt;
Insert Object B &lt;br/&gt;
Insert Object C&lt;br/&gt;
/** &lt;br/&gt;
    more code&lt;br/&gt;
**/&lt;br/&gt;
Look up ObjectA and set ObjectB as child &lt;br/&gt;
Look up ObjectB and set ObjectA as parent &lt;br/&gt;
Look up ObjectB and set ObjectC as child&lt;br/&gt;
Look up ObjectC and set ObjectB as parent&lt;/p&gt;</description>
                <environment>Ubuntu 10.04&lt;br/&gt;
ReplicaSet: 1 Primary and 2 Secondary&lt;br/&gt;
Java Driver version: 2.9.0&lt;br/&gt;
Driver Options: slaveOk = true, WriteConcern=WriteConcern.Safe&lt;br/&gt;
&lt;br/&gt;
gokoSet:PRIMARY&amp;gt; db.serverBuildInfo()&lt;br/&gt;
{&lt;br/&gt;
	&amp;quot;version&amp;quot; : &amp;quot;1.8.5&amp;quot;,&lt;br/&gt;
	&amp;quot;gitVersion&amp;quot; : &amp;quot;403c8dadcd56f68dcbe06013ecbfac67b32a22ac&amp;quot;,&lt;br/&gt;
	&amp;quot;sysInfo&amp;quot; : &amp;quot;Linux ip-10-110-9-236 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41&amp;quot;,&lt;br/&gt;
	&amp;quot;bits&amp;quot; : 64,&lt;br/&gt;
	&amp;quot;debug&amp;quot; : false,&lt;br/&gt;
	&amp;quot;maxBsonObjectSize&amp;quot; : 16777216,&lt;br/&gt;
	&amp;quot;ok&amp;quot; : 1&lt;br/&gt;
}&lt;br/&gt;
</environment>
        <key id="50806">JAVA-647</key>
            <summary>stale read issue in a ReplicaSet setup</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</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="3">Duplicate</resolution>
                                        <assignee username="barrie">Barrie Segal</assignee>
                                    <reporter username="paul.kim@funsockets.com">Paul Kim</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 Sep 2012 22:20:05 +0000</created>
                <updated>Tue, 18 Sep 2012 23:32:25 +0000</updated>
                            <resolved>Tue, 18 Sep 2012 23:19:02 +0000</resolved>
                                                                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="165759" author="paul.kim@funsockets.com" created="Tue, 18 Sep 2012 22:21:31 +0000"  >&lt;p&gt;Oops, please close this. This was supposed to be created in Commercial Support&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <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|hrhtpz:</customfieldvalue>

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