Skip to content

Commit

Permalink
Fixing semisync statis in MySQL 8: #454
Browse files Browse the repository at this point in the history
  • Loading branch information
svaroqui committed Oct 19, 2022
1 parent 5883f38 commit f646755
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 31 deletions.
37 changes: 6 additions & 31 deletions cluster/srv.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
33 changes: 33 additions & 0 deletions cluster/srv_has.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit f646755

Please sign in to comment.