func (c *mongoConn) IsMaster() (bool, error) { hostPort, err := replicaset.MasterHostPort(c.session) if err != nil { logger.Errorf("replicaset.MasterHostPort returned error: %v", err) return false, err } logger.Errorf("replicaset.MasterHostPort(%s) returned %s", c.localHostPort, hostPort) logger.Errorf("-> %s IsMaster: %v", c.localHostPort, hostPort == c.localHostPort) return hostPort == c.localHostPort, nil }
// IsMaster returns a boolean that represents whether the given // machine's peer address is the primary mongo host for the replicaset func IsMaster(session *mgo.Session, obj WithAddresses) (bool, error) { addrs := obj.Addresses() masterHostPort, err := replicaset.MasterHostPort(session) // If the replica set has not been configured, then we // can have only one master and the caller must // be that master. if err == replicaset.ErrMasterNotConfigured { return true, nil } if err != nil { return false, err } masterAddr, _, err := net.SplitHostPort(masterHostPort) if err != nil { return false, err } machinePeerAddr := SelectPeerAddress(addrs) return machinePeerAddr == masterAddr, nil }