Details
-
Task
-
Resolution: Works as Designed
-
Minor - P4
-
None
-
3.4.2
-
None
-
None
-
Windows
Description
Hello,
I am trying to connect to my cluster with java driver. However I am not able.
I was using 3.0.x version and I migrated to 3.4.2 to have compatiblity with mongodb 3.4
For information:
- MongoDB server version: 3.4.6
- Driver version: 3.4.2
I always get the same error:
Caused by: org.springframework.dao.DataAccessResourceFailureException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster0-shard-00-01-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=cluster0-shard-00-02-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=cluster0-shard-00-00-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster0-shard-00-01-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=cluster0-shard-00-02-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=cluster0-shard-00-00-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}] |
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:77) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2118) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1908) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1716) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:586) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:581) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at com.handyou.context.HYProjectContext.getStringParameter(HYProjectContext.java:48) ~[commons-0.0-SNAPSHOT.jar:na] |
at com.handyou.auth.PostProcessesFilter.addOrigin(PostProcessesFilter.java:110) ~[connect-impl-0.0-SNAPSHOT.jar:na] |
at com.handyou.auth.PostProcessesFilter.renewTokenIfNeeded(PostProcessesFilter.java:102) ~[connect-impl-0.0-SNAPSHOT.jar:na] |
at com.handyou.auth.PostProcessesFilter.filter(PostProcessesFilter.java:57) ~[connect-impl-0.0-SNAPSHOT.jar:na] |
at com.handyou.auth.PostProcessesFilter$$FastClassBySpringCGLIB$$8d597cba.invoke(<generated>) ~[connect-impl-0.0-SNAPSHOT.jar:na] |
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.3.RELEASE.jar:4.2.3.RELEASE] |
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:718) ~[spring-aop-4.2.3.RELEASE.jar:4.2.3.RELEASE] |
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.2.3.RELEASE.jar:4.2.3.RELEASE] |
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) ~[spring-aop-4.2.3.RELEASE.jar:4.2.3.RELEASE] |
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) ~[spring-aop-4.2.3.RELEASE.jar:4.2.3.RELEASE] |
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.3.RELEASE.jar:4.2.3.RELEASE] |
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:654) ~[spring-aop-4.2.3.RELEASE.jar:4.2.3.RELEASE] |
at com.handyou.auth.PostProcessesFilter$$EnhancerBySpringCGLIB$$6dcb9187.filter(<generated>) ~[connect-impl-0.0-SNAPSHOT.jar:na] |
at org.apache.cxf.jaxrs.utils.JAXRSUtils.runContainerResponseFilters(JAXRSUtils.java:1679) ~[cxf-rt-frontend-jaxrs-3.0.7.jar:3.0.7] |
at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:170) ~[cxf-rt-frontend-jaxrs-3.0.7.jar:3.0.7] |
... 40 common frames omitted |
Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster0-shard-00-01-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=cluster0-shard-00-02-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {address=cluster0-shard-00-00-b7hgq.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}] |
at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:377) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:104) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:402) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.operation.FindOperation.execute(FindOperation.java:510) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.operation.FindOperation.execute(FindOperation.java:81) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.Mongo.execute(Mongo.java:836) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.Mongo$2.execute(Mongo.java:823) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.DBCursor.initializeCursor(DBCursor.java:870) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.DBCursor.hasNext(DBCursor.java:142) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.DBCursor.one(DBCursor.java:679) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.DBCollection.findOne(DBCollection.java:833) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.DBCollection.findOne(DBCollection.java:796) ~[mongo-java-driver-3.4.2.jar:na] |
at com.mongodb.DBCollection.findOne(DBCollection.java:743) ~[mongo-java-driver-3.4.2.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:2169) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:2153) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1905) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na] |
... 58 common frames omitted |
Here is what I am using to get the client:
public MongoDbFactory mongoDbFactory() throws Exception { |
if(mongoClient == null){ |
|
List<ServerAddress> seeds = new ArrayList<>(); |
seeds.add(new ServerAddress("cluster0-shard-00-00-b7hgq.mongodb.net", 27017)); |
seeds.add(new ServerAddress("cluster0-shard-00-01-b7hgq.mongodb.net", 27017)); |
seeds.add(new ServerAddress("cluster0-shard-00-02-b7hgq.mongodb.net", 27017)); |
List<MongoCredential> credentialsList = new ArrayList<>(); |
credentialsList.add(MongoCredential.createCredential(USER, HYDB, PASSWORD.toCharArray()));
|
|
mongoClient = new MongoClient(seeds, credentialsList); |
}
|
return new SimpleMongoDbFactory(mongoClient, HYDB); |
}
|
And the accessor:
public String getStringParameter(String parameterName) { |
|
|
// query to search user |
Query searchUserQuery = new Query(Criteria.where("name").is(parameterName)); |
|
|
// find the saved user again. |
Configuration configuration = mongoAccess.getOperation().findOne(searchUserQuery, Configuration.class); |
|
|
return configuration.getValue(); |
}
|
When I try to do in local:
public MongoDbFactory mongoDbFactory() throws Exception { |
if(mongoClient == null){ |
mongoClient = new MongoClient(); |
}
|
//mongoClient.close(); |
return new SimpleMongoDbFactory(mongoClient, HYDB); |
}
|
It is supposed to do it with 127.0.0.1 and I am getting no issues.
The connection information are correct as I am able to connect to cluster with mongoshell
Last thing I tried with the solution proposed here and I am getting another issue:
So basically I am doing:
String url = "mongodb://<USER_WITH_DASH>:<PASSWORD_WITHOUT_SPECIAL_CHAR>@cluster0-shard-00-00-b7hgq.mongodb.net:27017,mongodb://<USER_WITH_DASH>:<PASSWORD_WITHOUT_SPECIAL_CHAR>@cluster0-shard-00-01-b7hgq.mongodb.net:27017,mongodb://<USER_WITH_DASH>:<PASSWORD_WITHOUT_SPECIAL_CHAR>@cluster0-shard-00-02-b7hgq.mongodb.net:27017/admin?ssl=true&replicaSet=cluster0-shard-0&authSource=admin"; |
|
|
MongoClientURI uri = new MongoClientURI(url); |
MongoClient mongoClient = new MongoClient(uri); |
As user as a dash I tried with "-" or "%2D" but always getting same error:
java.lang.IllegalArgumentException: The connection string contains invalid user information. If the username or password contains a colon (:) or an at-sign (@) then it must be urlencoded
|
Can someone helps me as I am totally blocked for my preproduction tests...
Thanks in advance
Regards