Skip to content

Commit f646755

Browse files
committed
Fixing semisync statis in MySQL 8: #454
1 parent 5883f38 commit f646755

File tree

2 files changed

+39
-31
lines changed

2 files changed

+39
-31
lines changed

cluster/srv.go

+6-31
Original file line numberDiff line numberDiff line change
@@ -799,38 +799,13 @@ func (server *ServerMonitor) Refresh() error {
799799
server.PrevStatus = server.Status
800800

801801
server.Status, logs, _ = dbhelper.GetStatus(server.Conn, server.DBVersion)
802-
//server.ClusterGroup.LogPrintf("ERROR: %s %s %s", su["RPL_SEMI_SYNC_MASTER_STATUS"], su["RPL_SEMI_SYNC_SLAVE_STATUS"], server.URL)
803-
if server.Status["RPL_SEMI_SYNC_MASTER_STATUS"] == "" || server.Status["RPL_SEMI_SYNC_SLAVE_STATUS"] == "" {
804-
server.HaveSemiSync = false
805-
} else {
806-
server.HaveSemiSync = true
807-
}
808-
if server.Status["RPL_SEMI_SYNC_MASTER_STATUS"] == "ON" {
809-
server.SemiSyncMasterStatus = true
810-
} else {
811-
server.SemiSyncMasterStatus = false
812-
}
813-
if server.Status["RPL_SEMI_SYNC_SLAVE_STATUS"] == "ON" {
814-
server.SemiSyncSlaveStatus = true
815-
} else {
816-
server.SemiSyncSlaveStatus = false
817-
}
802+
server.HaveSemiSync = server.HasSemiSync()
803+
server.SemiSyncMasterStatus = server.IsSemiSyncMaster()
804+
server.SemiSyncSlaveStatus = server.IsSemiSyncReplica()
805+
server.IsWsrepSync = server.HasWsrepSync()
806+
server.IsWsrepDonor = server.HasWsrepDonor()
807+
server.IsWsrepPrimary = server.HasWsrepPrimary()
818808

819-
if server.Status["WSREP_LOCAL_STATE"] == "4" {
820-
server.IsWsrepSync = true
821-
} else {
822-
server.IsWsrepSync = false
823-
}
824-
if server.Status["WSREP_LOCAL_STATE"] == "2" {
825-
server.IsWsrepDonor = true
826-
} else {
827-
server.IsWsrepDonor = false
828-
}
829-
if server.Status["WSREP_CLUSTER_STATUS"] == "PRIMARY" {
830-
server.IsWsrepPrimary = true
831-
} else {
832-
server.IsWsrepPrimary = false
833-
}
834809
if len(server.PrevStatus) > 0 {
835810
qps, _ := strconv.ParseInt(server.Status["QUERIES"], 10, 64)
836811
prevqps, _ := strconv.ParseInt(server.PrevStatus["QUERIES"], 10, 64)

cluster/srv_has.go

+33
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,39 @@ import (
1717
"github.com/signal18/replication-manager/utils/dbhelper"
1818
)
1919

20+
func (server *ServerMonitor) IsSemiSyncMaster() bool {
21+
return server.Status["RPL_SEMI_SYNC_MASTER_STATUS"] == "ON" || server.Status["RPL_SEMI_SYNC_SOURCE_STATUS"] == "ON"
22+
}
23+
24+
func (server *ServerMonitor) IsSemiSyncReplica() bool {
25+
return server.Status["RPL_SEMI_SYNC_SLAVE_STATUS"] == "ON" || server.Status["RPL_SEMI_SYNC_REPLICA_STATUS"] == "ON"
26+
}
27+
28+
func (server *ServerMonitor) HasSemiSync() bool {
29+
return server.IsSemiSyncReplica() || server.IsSemiSyncMaster()
30+
}
31+
32+
func (server *ServerMonitor) HasWsrepSync() bool {
33+
if server.Status["WSREP_LOCAL_STATE"] == "4" {
34+
return true
35+
}
36+
return false
37+
}
38+
39+
func (server *ServerMonitor) HasWsrepDonor() bool {
40+
if server.Status["WSREP_LOCAL_STATE"] == "2" {
41+
return true
42+
}
43+
return false
44+
}
45+
46+
func (server *ServerMonitor) HasWsrepPrimary() bool {
47+
if server.Status["WSREP_CLUSTER_STATUS"] == "PRIMARY" {
48+
return true
49+
}
50+
return false
51+
}
52+
2053
func (server *ServerMonitor) IsInDelayedHost() bool {
2154
delayedhosts := strings.Split(server.GetClusterConfig().HostsDelayed, ",")
2255
for _, url := range delayedhosts {

0 commit comments

Comments
 (0)