<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:52:56 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-729]  com.mongodb.ReplicaSetStatus$Node update  java.net.SocketException: Connection reset</title>
                <link>https://jira.mongodb.org/browse/JAVA-729</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;I have readed the Issue &lt;a href=&quot;https://jira.mongodb.org/browse/JAVA-376&quot; title=&quot;ReplicaSetStatus thread still seems alive after Mongo.close() call&quot; class=&quot;issue-link&quot; data-issue-key=&quot;JAVA-376&quot;&gt;&lt;del&gt;JAVA-376&lt;/del&gt;&lt;/a&gt;,but I found the problem seems till exist.&lt;br/&gt;
I use the driver in spring.&lt;br/&gt;
I must to connect two mongoDB datasource .here is the code:&lt;br/&gt;
public class MongodbDataSource  implements InitializingBean{&lt;br/&gt;
	private final static Log log = LogFactory.getLog(MongodbDataSource.class);&lt;br/&gt;
	/*&lt;b&gt;mongodb&#38142;&#25509;&#23545;&#35937;&#65292;&#30456;&#24403;&#20110;&#25968;&#25454;&#24211;&#36830;&#25509;&#27744;&lt;/b&gt;/&lt;br/&gt;
	private  Mongo mongo = null;&lt;br/&gt;
	/*&lt;b&gt;mongodb&#25968;&#25454;&#24211;&#38142;&#25509;&#23545;&#35937;&lt;/b&gt;/&lt;br/&gt;
	private DB db = null;&lt;br/&gt;
	/*&lt;b&gt;&#20445;&#23384;&#26381;&#21153;&#31471;&#30340;&#22320;&#22336;&#21015;&#34920;&lt;/b&gt;/&lt;br/&gt;
    private  List&amp;lt;ServerAddress&amp;gt; addressList = null;&lt;br/&gt;
    private boolean isSave = true;&lt;br/&gt;
    /*&lt;b&gt;&#27599;&#21488;&#20027;&#26426;&#36830;&#25509;&#25968;&#65292;&#21487;&#36890;&#36807;&#37197;&#32622;&#25991;&#20214;&#36827;&#34892;&#20462;&#25913;&lt;/b&gt;/&lt;br/&gt;
    private int connectionPerHost = 50;&lt;br/&gt;
    /*&lt;b&gt;&#38142;&#25509;&#30340;&#36229;&#26102;&#26102;&#38388;&#65292;&#21487;&#36890;&#36807;&#37197;&#32622;&#25991;&#20214;&#36827;&#34892;&#20462;&#25913;&lt;/b&gt;/&lt;br/&gt;
    private int connectionTimeout = 10000;&lt;br/&gt;
    /*&lt;b&gt;&#25968;&#25454;&#24211;&#29992;&#25143;&#21517;&lt;/b&gt;/&lt;br/&gt;
    private String userName;&lt;br/&gt;
    /*&lt;b&gt;&#25968;&#25454;&#24211;&#23494;&#30721;&lt;/b&gt;/&lt;br/&gt;
    private String password;&lt;br/&gt;
    /*&lt;b&gt;&#25968;&#25454;&#24211;&#21517;&#31216;&lt;/b&gt;/&lt;br/&gt;
    private String dbName;&lt;/p&gt;

&lt;p&gt;    private boolean isTest;&lt;/p&gt;

&lt;p&gt;	/**&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&#31532;&#19968;&#27425;&#23454;&#20363;&#21270;&#30340;&#26102;&#20505;&#35843;&#29992;&#36825;&#20010;&#20989;&#25968;&lt;br/&gt;
	 */&lt;br/&gt;
	@Override&lt;br/&gt;
	public void afterPropertiesSet() {&lt;br/&gt;
		boolean address = addressList != null &amp;amp;&amp;amp; addressList.size() &amp;gt; 0;&lt;br/&gt;
		if (address) 
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: {			try {
				/**&#21021;&#22987;&#21270;mongo&#36830;&#25509;*/
				initMongo();
			}			catch (Exception e) {
				log.error(&quot;&#21021;&#22987;&#21270;mongodb&#38142;&#25509;&#22833;&#36133;!&quot;, e);
			}		}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;		else &lt;/p&gt;
{
			log.error(&quot;&#27809;&#26377;mongodb&#26381;&#21153;&#22320;&#22336;!&quot;);
		}
&lt;p&gt;	}&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;	/**&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&#21021;&#22987;&#21270;&#20989;&#25968;&lt;br/&gt;
	 */&lt;br/&gt;
	private void initMongo()
{
		MongoOptions op = new MongoOptions();
		op.safe=isSave;
		op.connectionsPerHost=connectionPerHost;
		op.connectTimeout=connectionTimeout;
		mongo = new Mongo(addressList,op); 
	}&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;	/**&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&#24471;&#21040;&#25968;&#25454;&#24211;&#38142;&#25509;&#65292;&#36825;&#20010;&#36830;&#25509;&#25968;&#26159;&#26681;&#25454;mongo&#36830;&#25509;&#27744;&#36827;&#34892;&#25511;&#21046;&#30340;&lt;br/&gt;
	 */&lt;br/&gt;
	public  DB getTheDB(){&lt;br/&gt;
		if(mongo == null)
{
			log.error(&quot;mongo&#21021;&#22987;&#21270;&#22833;&#36133;!&quot;);
			return null;
		}
&lt;p&gt;		db = mongo.getDB(dbName);&lt;br/&gt;
		if(db == null)&lt;/p&gt;
{
			log.error(&quot;&#26681;&#25454;&#25968;&#25454;&#24211;&#21517;&#31216;&#33719;&#21462;&#25968;&#25454;&#24211;&#22833;&#36133;!&quot;);
			return null;
		}
&lt;p&gt;		if(!db.isAuthenticated())&lt;/p&gt;
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: {			boolean auth = db.authenticate(userName, password.toCharArray());			if(!auth){
				log.error(&quot;&#25968;&#25454;&#24211;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#39564;&#35777;&#22833;&#36133;!&quot;);
				return null;
			}		}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;		return db;&lt;br/&gt;
	}&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;	/**&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&#20851;&#38381;&#25152;&#26377;&#27963;&#21160;&#30340;&#25968;&#25454;&#24211;&#38142;&#25509;&#65292;&#22312;&#23481;&#22120;&#20851;&#38381;&#30340;&#26102;&#20505;&#38656;&#35201;&#35843;&#29992;&#36825;&#20010;&#26041;&#27861;&lt;br/&gt;
	 */&lt;br/&gt;
	public synchronized void destory()
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: {		if(mongo != null){
			mongo.close();
			mongo = null;
		}	}&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;	public void setDbName(String dbName) &lt;/p&gt;
{
		this.dbName = dbName;
	}

&lt;p&gt;	public void setAddressList(List&amp;lt;ServerAddress&amp;gt; addressList) &lt;/p&gt;
{
		this.addressList = addressList;
	}

&lt;p&gt;	public void setIsSave(boolean isSave) &lt;/p&gt;
{
		this.isSave = isSave;
	}

&lt;p&gt;	public void setConnectionPerHost(int connectionPerHost) &lt;/p&gt;
{
		this.connectionPerHost = connectionPerHost;
	}

&lt;p&gt;	public void setConnectionTimeout(int connectionTimeout) &lt;/p&gt;
{
		this.connectionTimeout = connectionTimeout;
	}

&lt;p&gt;	public void setUserName(String userName) &lt;/p&gt;
{
		this.userName = userName;
	}

&lt;p&gt;	public void setPassword(String password) &lt;/p&gt;
{
		this.password = password;
	}
&lt;p&gt;}&lt;/p&gt;


&lt;p&gt;I config two instance ,here is the config:&lt;/p&gt;

&lt;p&gt; &amp;lt;bean id=&quot;serverAddress1&quot; class=&quot;com.mongodb.ServerAddress&quot;&amp;gt;&lt;br/&gt;
        &amp;lt;constructor-arg index=&quot;0&quot; type=&quot;java.lang.String&quot; value=&quot;10.28.168.38&quot; /&amp;gt;&lt;br/&gt;
        &amp;lt;constructor-arg index=&quot;1&quot; type=&quot;int&quot; value=&quot;5281&quot;/&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;br/&gt;
    &amp;lt;bean id=&quot;serverAddress2&quot; class=&quot;com.mongodb.ServerAddress&quot;&amp;gt;&lt;br/&gt;
    	 &amp;lt;constructor-arg index=&quot;0&quot; type=&quot;java.lang.String&quot; value=&quot;10.28.168.38&quot; /&amp;gt;&lt;br/&gt;
         &amp;lt;constructor-arg index=&quot;1&quot; type=&quot;int&quot; value=&quot;5281&quot;/&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;br/&gt;
     &amp;lt;bean id=&quot;serverAddress3&quot; class=&quot;com.mongodb.ServerAddress&quot;&amp;gt;&lt;br/&gt;
    	 &amp;lt;constructor-arg index=&quot;0&quot; type=&quot;java.lang.String&quot; value=&quot;10.28.168.38&quot; /&amp;gt;&lt;br/&gt;
         &amp;lt;constructor-arg index=&quot;1&quot; type=&quot;int&quot; value=&quot;5281&quot;/&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;br/&gt;
    &amp;lt;bean id=&quot;serverAddress4&quot; class=&quot;com.mongodb.ServerAddress&quot;&amp;gt;&lt;br/&gt;
    	 &amp;lt;constructor-arg index=&quot;0&quot; type=&quot;java.lang.String&quot; value=&quot;10.28.168.38&quot; /&amp;gt;&lt;br/&gt;
         &amp;lt;constructor-arg index=&quot;1&quot; type=&quot;int&quot; value=&quot;5281&quot;/&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;/p&gt;

&lt;p&gt;    &amp;lt;bean id=&quot;mongodbDataSource&quot; class=&quot;MongodbDataSource&quot; destroy-method=&quot;destory&quot;&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;isSave&quot; value=&quot;true&quot; /&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;connectionPerHost&quot; value=&quot;100&quot; /&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;connectionTimeout&quot; value=&quot;12000&quot; /&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;userName&quot; value=&quot;sa&quot;/&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;password&quot; value=&quot;sa&quot;/&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;dbName&quot; value=&quot;collocate&quot;/&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;addressList&quot;&amp;gt;&lt;br/&gt;
    		&amp;lt;list&amp;gt;&lt;br/&gt;
    			&amp;lt;ref bean=&quot;serverAddress1&quot;/&amp;gt;&lt;br/&gt;
    			&amp;lt;ref bean=&quot;serverAddress2&quot;/&amp;gt;&lt;br/&gt;
    			&amp;lt;ref bean=&quot;serverAddress3&quot;/&amp;gt;&lt;br/&gt;
    			&amp;lt;ref bean=&quot;serverAddress4&quot;/&amp;gt;&lt;br/&gt;
    		&amp;lt;/list&amp;gt;&lt;br/&gt;
    	&amp;lt;/property&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;/p&gt;


&lt;p&gt;    &amp;lt;!-- collocate end --&amp;gt;&lt;br/&gt;
     &amp;lt;bean id=&quot;serverAddress5&quot; class=&quot;com.mongodb.ServerAddress&quot;&amp;gt;&lt;br/&gt;
        &amp;lt;constructor-arg index=&quot;0&quot; type=&quot;java.lang.String&quot; value=&quot;10.12.212.196&quot; /&amp;gt;&lt;br/&gt;
        &amp;lt;constructor-arg index=&quot;1&quot; type=&quot;int&quot; value=&quot;20011&quot;/&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;br/&gt;
    &amp;lt;bean id=&quot;serverAddress6&quot; class=&quot;com.mongodb.ServerAddress&quot;&amp;gt;&lt;br/&gt;
    	 &amp;lt;constructor-arg index=&quot;0&quot; type=&quot;java.lang.String&quot; value=&quot;10.12.212.196&quot; /&amp;gt;&lt;br/&gt;
         &amp;lt;constructor-arg index=&quot;1&quot; type=&quot;int&quot; value=&quot;20011&quot;/&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;/p&gt;

&lt;p&gt;     &amp;lt;bean id=&quot;mongodbDataSource1&quot; class=&quot;MongodbDataSource&quot; destroy-method=&quot;destory&quot;&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;isSave&quot; value=&quot;true&quot; /&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;test&quot; value=&quot;false&quot; /&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;connectionPerHost&quot; value=&quot;1&quot; /&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;connectionTimeout&quot; value=&quot;12000&quot; /&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;userName&quot; value=&quot;123&quot;/&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;password&quot; value=&quot;123&quot;/&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;dbName&quot; value=&quot;sku_colocation&quot;/&amp;gt;&lt;br/&gt;
    	&amp;lt;property name=&quot;addressList&quot;&amp;gt;&lt;br/&gt;
    		&amp;lt;list&amp;gt;&lt;br/&gt;
    			&amp;lt;ref bean=&quot;serverAddress5&quot;/&amp;gt;&lt;br/&gt;
    			&amp;lt;ref bean=&quot;serverAddress6&quot;/&amp;gt;&lt;br/&gt;
    		&amp;lt;/list&amp;gt;&lt;br/&gt;
    	&amp;lt;/property&amp;gt;&lt;br/&gt;
    &amp;lt;/bean&amp;gt;&lt;br/&gt;
======================================================================================&lt;br/&gt;
There is no problem with the network or  authenticate , but I got the Exception :&lt;br/&gt;
2013-1-14 11:09:22 com.mongodb.ReplicaSetStatus$Node update&lt;br/&gt;
&#35686;&#21578;: Server seen down: 10.12.212.196:20011&lt;br/&gt;
java.net.SocketException: Connection reset&lt;br/&gt;
	at java.net.SocketInputStream.read(SocketInputStream.java:168)&lt;br/&gt;
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)&lt;br/&gt;
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)&lt;br/&gt;
	at java.io.BufferedInputStream.read(BufferedInputStream.java:317)&lt;br/&gt;
	at org.bson.io.Bits.readFully(Bits.java:35)&lt;br/&gt;
	at org.bson.io.Bits.readFully(Bits.java:28)&lt;br/&gt;
	at com.mongodb.Response.&amp;lt;init&amp;gt;(Response.java:39)&lt;br/&gt;
	at com.mongodb.DBPort.go(DBPort.java:128)&lt;br/&gt;
	at com.mongodb.DBPort.go(DBPort.java:93)&lt;br/&gt;
	at com.mongodb.DBPort.findOne(DBPort.java:146)&lt;br/&gt;
	at com.mongodb.DBPort.runCommand(DBPort.java:157)&lt;br/&gt;
	at com.mongodb.ReplicaSetStatus$Node.update(ReplicaSetStatus.java:255)&lt;br/&gt;
	at com.mongodb.ReplicaSetStatus$Node.update(ReplicaSetStatus.java:249)&lt;br/&gt;
	at com.mongodb.ReplicaSetStatus.ensureMaster(ReplicaSetStatus.java:440)&lt;br/&gt;
	at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:431)&lt;br/&gt;
	at com.mongodb.ReplicaSetStatus$Updater.run(ReplicaSetStatus.java:421)&lt;/p&gt;


</description>
                <environment>windows7 </environment>
        <key id="61831">JAVA-729</key>
            <summary> com.mongodb.ReplicaSetStatus$Node update  java.net.SocketException: Connection reset</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="4">Incomplete</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="huangzili">huangzili</reporter>
                        <labels>
                    </labels>
                <created>Mon, 14 Jan 2013 03:14:35 +0000</created>
                <updated>Fri, 12 Jul 2013 13:41:04 +0000</updated>
                            <resolved>Fri, 12 Jul 2013 13:41:04 +0000</resolved>
                                    <version>2.7.2</version>
                                                    <component>Cluster Management</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="379763" author="jeff.yemin" created="Fri, 12 Jul 2013 13:40:43 +0000"  >&lt;p&gt;Are you still experiencing this.  It&apos;s hard to see how you would get a SocketException and not have some connectivity issue.  I&apos;m going to close this, but please re-open if you have any more information.&lt;/p&gt;</comment>
                    </comments>
                    <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|hrlk7j:</customfieldvalue>

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