Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
on TOS for Big Data 8.0.1.20211109_1610 I am not able to connect to a MongoDB service that icludes a load balancer:
org.talend.repository.nosql.exceptions.NoSQLServerException: Cannot connect to database!
at org.talend.repository.nosql.db.util.mongodb.MongoDBConnectionUtil.checkConnection(MongoDBConnectionUtil.java:103)
at org.talend.repository.nosql.db.provider.mongodb.MongoDBMetadataProvider.checkConnection(MongoDBMetadataProvider.java:243)
at org.talend.repository.nosql.ui.common.AbstractNoSQLConnForm$1$1.run(AbstractNoSQLConnForm.java:157)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=myhost-lb.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoCommandException: Command failed with error 354 (LoadBalancerSupportMismatch): 'The server is being accessed through a load balancer, but this driver does not have load balancing enabled' on server myhost-lb.mongodb.net:27017. The full response is {"ok": 0, "errmsg": "The server is being accessed through a load balancer, but this driver does not have load balancing enabled", "code": 354, "codeName": "LoadBalancerSupportMismatch"}}}]
at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:184)
at com.mongodb.internal.connection.SingleServerCluster.getDescription(SingleServerCluster.java:46)
at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:143)
at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:100)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:285)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:177)
at com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:130)
at com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:90)
at com.mongodb.client.internal.MappingIterable.iterator(MappingIterable.java:42)
at com.mongodb.client.internal.MappingIterable.iterator(MappingIterable.java:30)
at org.talend.repository.nosql.db.util.mongodb.MongoDBConnectionUtil.checkConnection(MongoDBConnectionUtil.java:94)
... 3 more
On the other hand, there are no issues connecting to a MongoDB service w/o a load balancer or for which replica hostnames are available.
Any workaround?
Thanks for your help,
Mick
Hello Mick,
You don't need to use a load balancer, or to route queries to secondary nodes; the primary node can handle concurrent queries by itself, see https://stackoverflow.com/questions/43804022/mongodb-load-balancer-for-the-replica-set
As a workaround, please check the button 'Use replica set address' and setup the Replica host/ports
Hi Achen,
unfortunately I don't have any control over that MongoDB server and they provided me no replica hosts.
Any other way?
Thanks