github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/gopkg.in/mgo.v2/harness/mongojs/wait.js (about) 1 // We know the master of the first set (pri=1), but not of the second. 2 var settings = {} 3 var rs1cfg = {_id: "rs1", 4 members: [{_id: 1, host: "127.0.0.1:40011", priority: 1}, 5 {_id: 2, host: "127.0.0.1:40012", priority: 0}, 6 {_id: 3, host: "127.0.0.1:40013", priority: 0}]} 7 var rs2cfg = {_id: "rs2", 8 members: [{_id: 1, host: "127.0.0.1:40021", priority: 1}, 9 {_id: 2, host: "127.0.0.1:40022", priority: 1}, 10 {_id: 3, host: "127.0.0.1:40023", priority: 0}]} 11 var rs3cfg = {_id: "rs3", 12 members: [{_id: 1, host: "127.0.0.1:40031", priority: 1}, 13 {_id: 2, host: "127.0.0.1:40032", priority: 1}, 14 {_id: 3, host: "127.0.0.1:40033", priority: 1}], 15 settings: settings} 16 17 for (var i = 0; i != 60; i++) { 18 try { 19 rs1a = new Mongo("127.0.0.1:40011").getDB("admin") 20 rs2a = new Mongo("127.0.0.1:40021").getDB("admin") 21 rs3a = new Mongo("127.0.0.1:40031").getDB("admin") 22 rs3a.auth("root", "rapadura") 23 db1 = new Mongo("127.0.0.1:40001").getDB("admin") 24 db2 = new Mongo("127.0.0.1:40002").getDB("admin") 25 break 26 } catch(err) { 27 print("Can't connect yet...") 28 } 29 sleep(1000) 30 } 31 32 function countHealthy(rs) { 33 var status = rs.runCommand({replSetGetStatus: 1}) 34 var count = 0 35 var primary = 0 36 if (typeof status.members != "undefined") { 37 for (var i = 0; i != status.members.length; i++) { 38 var m = status.members[i] 39 if (m.health == 1 && (m.state == 1 || m.state == 2)) { 40 count += 1 41 if (m.state == 1) { 42 primary = 1 43 } 44 } 45 } 46 } 47 if (primary == 0) { 48 count = 0 49 } 50 return count 51 } 52 53 var totalRSMembers = rs1cfg.members.length + rs2cfg.members.length + rs3cfg.members.length 54 55 for (var i = 0; i != 90; i++) { 56 var count = countHealthy(rs1a) + countHealthy(rs2a) + countHealthy(rs3a) 57 print("Replica sets have", count, "healthy nodes.") 58 if (count == totalRSMembers) { 59 quit(0) 60 } 61 sleep(1000) 62 } 63 64 print("Replica sets didn't sync up properly.") 65 quit(12) 66 67 // vim:ts=4:sw=4:et