Details
Description
Failed to connect using mongo shell to MongoDB Atlas (M0 Free Tier) using the new 3.6. connection URI.
Currently in MongoDB Atlas a user is provided with two option to connect, shell 3.6 or later and shell 3.4. or earlier.
Using mongo shell version 3.6.0 and 3.6.1-rc0, returns below:
> mongo "mongodb+srv://servername-nesbp.mongodb.net/test" --authenticationDatabase admin --username <username> --password <password>
|
MongoDB shell version v3.6.0
|
connecting to: mongodb+srv://servername-nesbp.mongodb.net/test
|
2017-12-19T11:12:58.990+1100 I NETWORK [thread1] Starting new replica set monitor for servername-shard-0/servername-shard-00-00-nesbp.mongodb.net.:27017,servername-shard-00-01-nesbp.mongodb.net.:27017,servername-shard-00-02-nesbp.mongodb.net.:27017
|
2017-12-19T11:13:01.460+1100 W NETWORK [thread1] Unable to reach primary for set servername-shard-0
|
2017-12-19T11:13:01.461+1100 I NETWORK [thread1] Cannot reach any nodes for set servername-shard-0. Please check network connectivity and the status of the set. This has happened for 1 checks in a row.
|
Also tried a different format of mongo "mongodb+srv://<username>:<password>@servername-nesbp.mongodb.net/test" --authenticationDatabase admin with no success.
You can observe in the 'starting new replica set monitor' message when using the DNS lookup (3.6 SRV), it returns an extra dot (FQDN). May or may not be related SERVER-31965
However, using the alternative URI version 3.4 or earlier works:
> mongo "mongodb://servername-shard-00-00-nesbp.mongodb.net:27017,servername-shard-00-01-nesbp.mongodb.net:27017,servername-shard-00-02-nesbp.mongodb.net:27017/admin?ssl=true&replicaSet=servername-shard-0" --username <username> --password <password>
|
MongoDB shell version v3.6.0
|
connecting to: mongodb://servername-shard-00-00-nesbp.mongodb.net:27017,servername-shard-00-01-nesbp.mongodb.net:27017,servername-shard-00-02-nesbp.mongodb.net:27017/admin?ssl=true&replicaSet=servername-shard-0
|
2017-12-19T11:19:24.884+1100 I NETWORK [thread1] Starting new replica set monitor for servername-shard-0/servername-shard-00-00-nesbp.mongodb.net:27017,servername-shard-00-01-nesbp.mongodb.net:27017,servername-shard-00-02-nesbp.mongodb.net:27017
|
2017-12-19T11:19:26.318+1100 I NETWORK [ReplicaSetMonitor-TaskExecutor-0] Successfully connected to servername-shard-00-02-nesbp.mongodb.net:27017 (1 connections now open to servername-shard-00-02-nesbp.mongodb.net:27017 with a 5 second timeout)
|
Testing the same SRV connection using PyMongo v3.6 works fine.
import pymongo
|
mongouri = "mongodb+srv://<username>:<password>@servername-nesbp.mongodb.net/test"
|
client = pymongo.MongoClient(mongouri)
|
collection = client.test.atlas
|
cursor = collection.find()
|
for doc in cursor:
|
print(doc)
|
Looking at the Python driver code, it omits the final dot before returning hosts
https://github.com/mongodb/mongo-python-driver/blob/3.6.0/pymongo/uri_parser.py#L290
Compared to mongo shell code:
https://github.com/mongodb/mongo/blob/r3.6.1-rc0/src/mongo/client/mongo_uri.cpp#L378