com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting to connect
Solution 1
You obtain a Connection refused. Are you sure mongod is running?
Try to connect with mongoclient:
mongo 127.0.0.1:27000/test
and this for all the three instances (27000, 27002, 27001).
If you have problem also with mongoclient, check your logs.
Solution 2
another reason for this error can be that the version of mongo-java-driver is not compatible with your mongo application. My case : I was using mongo-java-driver version 2.12.3 with mongo 3.0.8 -> doesn't work. (https://docs.mongodb.com/ecosystem/drivers/driver-compatibility-reference/#reference-compatibility-mongodb-java)
Solution 3
Here is all the possible reason for this error are listed. In my case it was due to replicaset not initialised. Initialise replicaset using rs.initiate()
.
In my case I used the volume created from production data and used it in staging. Since the local
db was having old replicaset config, it was not able to become PRIMARY. I did the following thing to make it PRIMARY:
>use local
> db.dropDatabase();
{ "dropped" : "local", "ok" : 1 }
> rs.initiate()
>myrepl:PRMIARY
Now the client was able to connect and perform read/write operations.
Tonyukuk
Updated on July 09, 2022Comments
-
Tonyukuk almost 2 years
I assumed this question was asked several times but I had to reask it again. Because solutions provided for this question did not give me an exact answer to get rid of this bloody error.
I use
mongo-java-driver-2.12.4
andmongo.jar
when I try to insert document to db I get following error. Any help is appreciated.Error :
Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting to connect. Client view of cluster state is {type=Unknown, servers=[{address=127.0.0.1:27000, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused: connect}}, {address=127.0.0.1:27001, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused: connect}}, {address=127.0.0.1:27002, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused: connect}}] at com.mongodb.BaseCluster.getDescription(BaseCluster.java:128)
Code :
public class MongoDbConnectDatabase { public static void main(String[] args) { // To connect to mongodb server try { List<ServerAddress> lstServer = new ArrayList<ServerAddress>(); lstServer.add(new ServerAddress("127.0.0.1", 27000)); lstServer.add(new ServerAddress("127.0.0.1", 27002)); lstServer.add(new ServerAddress("127.0.0.1", 27001)); MongoClient mongoClient = new MongoClient(lstServer); // Now connect to your database DB db = mongoClient.getDB("test"); System.out.println("connect to database successfully"); DBCollection coll = db.createCollection("mycol", null); System.out.println("Collection created successfully"); DBCollection colReceived= db.getCollection("mycol"); System.out.println("Collection mycol selected successfully"); BasicDBObject doc = new BasicDBObject("title", "MongoDB"). append("description", "database"). append("likes", 100). append("url", "http://www.tutorialspoint.com/mongodb/"). append("by", "tutorials point"); colReceived.insert(doc); System.out.println("Document inserted successfully"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }