[JAVA-2733] what's the reason of Connection reset by peer and how to reproduce it Created: 14/Jan/18  Updated: 11/Sep/19  Resolved: 15/Jan/18

Status: Closed
Project: Java Driver
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Guowei Zhu Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Recently in production environment I found there was an error log of querying mongodb

11-Jan-2018 09:30:37.913 SEVERE [http-nio-7000-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcher] in context with path [/extract] threw exception [Request processing failed; nested exception is com.mongodb.MongoQueryException: Query failed with error code 6 and error message 'Connection reset by peer' on server 10.47.50.216:27017] with root cause
 com.mongodb.MongoQueryException: Query failed with error code 6 and error message 'Connection reset by peer' on server 10.47.50.216:27017
        at com.mongodb.operation.QueryHelper.translateCommandException(QueryHelper.java:31)
        at com.mongodb.operation.QueryBatchCursor.getMore(QueryBatchCursor.java:213)
        at com.mongodb.operation.QueryBatchCursor.hasNext(QueryBatchCursor.java:103)
        at com.mongodb.MongoBatchCursorAdapter.hasNext(MongoBatchCursorAdapter.java:46)

and the java code is like this

MongoCursor<Document> iterator = collection.find(query).projection(projection).iterator();
while (iterator.hasNext()) {
    Document next = iterator.next();
    //...
}

I do not know what reason could cause this error and how to reproduce this error?

I tried some manner to reproduce it but failed.

1. During iterate then disable access mongodb by iptables

sudo iptables -A OUTPUT -p tcp  -d XXX.XXX.XXX.XXX --dport 27017 -j DROP

I got

Caused by: java.net.ConnectException: Operation timed out
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_91]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_91]
	at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_91]
	at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongo-java-driver-3.4.2.jar:?]
	at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongo-java-driver-3.4.2.jar:?]

2. then I tried directly turn wifi, this time I got

Caused by: java.net.ConnectException: Network is unreachable
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_91]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_91]
	at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_91]
	at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongo-java-driver-3.4.2.jar:?]
	at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongo-java-driver-3.4.2.jar:?]

3. last I tried kill mongod process, and I got

Caused by: java.net.ConnectException: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_91]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_91]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_91]
	at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_91]
	at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongo-java-driver-3.4.2.jar:?]
	at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongo-java-driver-3.4.2.jar:?]



 Comments   
Comment by Ross Lawley [ 15/Jan/18 ]

Hi zhugw,

Just to let you know this project is for Java driver bugs or feature requests. The best place for questions regarding MongoDB usage or the Java driver specifics is the mongodb-user mailinglist or stackoverflow as you will reach a boarder audience there. If your business requires an answer from MongoDB within a time frame then we do offer production support.

If you do follow up via one of the options above please post a link and I will follow the conversation there.

All the best,

Ross

Generated at Thu Feb 08 08:57:57 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.