|
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:?]
|
|