Example #1
0
func (s *Sentinel) updateProxyConf(prevCV *cluster.ClusterView, cv *cluster.ClusterView, keepersState cluster.KeepersState) {
	masterID := cv.Master
	if prevCV.Master != masterID {
		log.Infof("deleting proxyconf")
		// Tell proxy to close connection to old master
		cv.ProxyConf = nil
		return
	}

	master, _ := keepersState[masterID]
	if s.isKeeperConverged(master, prevCV) {
		pc := &cluster.ProxyConf{
			Host: master.PGListenAddress,
			Port: master.PGPort,
		}
		prevPC := prevCV.ProxyConf
		update := true
		if prevPC != nil {
			if prevPC.Host == pc.Host && prevPC.Port == pc.Port {
				update = false
			}
		}
		if update {
			log.Infof("updating proxyconf to %s:%s", pc.Host, pc.Port)
			cv.ProxyConf = pc
		}
	}
	return
}