diff --git a/cluster/srv.go b/cluster/srv.go index 668f750ed..9779b97f8 100644 --- a/cluster/srv.go +++ b/cluster/srv.go @@ -799,38 +799,13 @@ func (server *ServerMonitor) Refresh() error { server.PrevStatus = server.Status server.Status, logs, _ = dbhelper.GetStatus(server.Conn, server.DBVersion) - //server.ClusterGroup.LogPrintf("ERROR: %s %s %s", su["RPL_SEMI_SYNC_MASTER_STATUS"], su["RPL_SEMI_SYNC_SLAVE_STATUS"], server.URL) - if server.Status["RPL_SEMI_SYNC_MASTER_STATUS"] == "" || server.Status["RPL_SEMI_SYNC_SLAVE_STATUS"] == "" { - server.HaveSemiSync = false - } else { - server.HaveSemiSync = true - } - if server.Status["RPL_SEMI_SYNC_MASTER_STATUS"] == "ON" { - server.SemiSyncMasterStatus = true - } else { - server.SemiSyncMasterStatus = false - } - if server.Status["RPL_SEMI_SYNC_SLAVE_STATUS"] == "ON" { - server.SemiSyncSlaveStatus = true - } else { - server.SemiSyncSlaveStatus = false - } + server.HaveSemiSync = server.HasSemiSync() + server.SemiSyncMasterStatus = server.IsSemiSyncMaster() + server.SemiSyncSlaveStatus = server.IsSemiSyncReplica() + server.IsWsrepSync = server.HasWsrepSync() + server.IsWsrepDonor = server.HasWsrepDonor() + server.IsWsrepPrimary = server.HasWsrepPrimary() - if server.Status["WSREP_LOCAL_STATE"] == "4" { - server.IsWsrepSync = true - } else { - server.IsWsrepSync = false - } - if server.Status["WSREP_LOCAL_STATE"] == "2" { - server.IsWsrepDonor = true - } else { - server.IsWsrepDonor = false - } - if server.Status["WSREP_CLUSTER_STATUS"] == "PRIMARY" { - server.IsWsrepPrimary = true - } else { - server.IsWsrepPrimary = false - } if len(server.PrevStatus) > 0 { qps, _ := strconv.ParseInt(server.Status["QUERIES"], 10, 64) prevqps, _ := strconv.ParseInt(server.PrevStatus["QUERIES"], 10, 64) diff --git a/cluster/srv_has.go b/cluster/srv_has.go index daa8c33f8..a8beda8b8 100644 --- a/cluster/srv_has.go +++ b/cluster/srv_has.go @@ -17,6 +17,39 @@ import ( "github.com/signal18/replication-manager/utils/dbhelper" ) +func (server *ServerMonitor) IsSemiSyncMaster() bool { + return server.Status["RPL_SEMI_SYNC_MASTER_STATUS"] == "ON" || server.Status["RPL_SEMI_SYNC_SOURCE_STATUS"] == "ON" +} + +func (server *ServerMonitor) IsSemiSyncReplica() bool { + return server.Status["RPL_SEMI_SYNC_SLAVE_STATUS"] == "ON" || server.Status["RPL_SEMI_SYNC_REPLICA_STATUS"] == "ON" +} + +func (server *ServerMonitor) HasSemiSync() bool { + return server.IsSemiSyncReplica() || server.IsSemiSyncMaster() +} + +func (server *ServerMonitor) HasWsrepSync() bool { + if server.Status["WSREP_LOCAL_STATE"] == "4" { + return true + } + return false +} + +func (server *ServerMonitor) HasWsrepDonor() bool { + if server.Status["WSREP_LOCAL_STATE"] == "2" { + return true + } + return false +} + +func (server *ServerMonitor) HasWsrepPrimary() bool { + if server.Status["WSREP_CLUSTER_STATUS"] == "PRIMARY" { + return true + } + return false +} + func (server *ServerMonitor) IsInDelayedHost() bool { delayedhosts := strings.Split(server.GetClusterConfig().HostsDelayed, ",") for _, url := range delayedhosts {