I have 2 application servers, which are connecting to a replicaSet (Primary, Secondary and Arbitrer).
Issue i'm facing is
[ 'MongoError: no primary found in replicaset',
' at ../server/node_modules/mongodb-core/lib/topologies/replset.js:524:28',
' at null.<anonymous> (../server/node_modules/mongodb-core/lib/topologies/replset.js:303:24)',
' at g (events.js:260:16)',
' at emitOne (events.js:77:13)',
' at emit (events.js:169:7)',
' at null.<anonymous> (../server/node_modules/mongodb-core/lib/topologies/server.js:326:21)',
' at emitOne (events.js:77:13)',
' at emit (events.js:169:7)',
' at null.<anonymous> (../server/node_modules/mongodb-core/lib/connection/pool.js:270:12)',
' at g (events.js:260:16)',
' at emitTwo (events.js:87:13)',
' at emit (events.js:172:7)',
' at Socket.<anonymous> (../server/node_modules/mongodb-core/lib/connection/connection.js:175:49)',
' at Socket.g (events.js:260:16)',
' at emitOne (events.js:77:13)',
' at Socket.emit (events.js:169:7)',
' at connectErrorNT (net.js:996:8)',
' at nextTickCallbackWith2Args (node.js:442:9)',
' at process._tickCallback (node.js:356:17)' ]
ReplicaSet config on application :
"mongodb" : {
"replicaset": {
"db" : "test",
"user" : "admin",
"password" : "*********",
"name":"rs1",
"replicas": [{"host":"App1Box.dmz.mytest.com.au","port":27017}, {"host":"App2Box.dmz.mytest.com.au","port":27018}]
}
rs.status() output
rs1:PRIMARY> rs.status()
{
"set" : "rs1",
"date" : ISODate("2018-05-17T03:50:01Z"),
"myState" : 1,
"members" : [
{
"_id" : 2,
"name" : "App3Box:27018",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 7180,
"lastHeartbeat" : ISODate("2018-05-17T03:50:00Z"),
"lastHeartbeatRecv" : ISODate("2018-05-17T03:50:00Z"),
"pingMs" : 0
},
{
"_id" : 3,
"name" : "App2Box:27018",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 7528,
"optime" : Timestamp(1526521846, 1),
"optimeDate" : ISODate("2018-05-17T01:50:46Z"),
"electionTime" : Timestamp(1526521798, 1),
"electionDate" : ISODate("2018-05-17T01:49:58Z"),
"self" : true
},
{
"_id" : 4,
"name" : "App1Box:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 7139,
"optime" : Timestamp(1526521846, 1),
"optimeDate" : ISODate("2018-05-17T01:50:46Z"),
"lastHeartbeat" : ISODate("2018-05-17T03:50:01Z"),
"lastHeartbeatRecv" : ISODate("2018-05-17T03:50:01Z"),
"pingMs" : 0,
"syncingTo" : "App2Box:27018"
}
],
"ok" : 1
}
However, I'm seeing this only from one of the app server which is connecting to MongoDB say App1Box. I'm not seeing this issue on App2Box.
I've tried removing members from replicaSets and re-added, issue still exists.
Mongo version : 2.6.8 node version : 4.4.3 npm version : 3.8.9
I can see all the members in replicaSet from mongo console while performing rs.status() on primary and secondary.
Thanks for your help.
Found the issue to be not using fully qualified DNS names, while adding members to replicaSet. Thanks to @Neil Lunn.