Skip to content

Commit 6c87cf3

Browse files
committed
Removed slave can cause the server to crash with error 1045
Add pprof to http handler
1 parent 97b7a8f commit 6c87cf3

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

cluster/srv.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ type ServerMonitor struct {
9393
IsMaintenance bool
9494
Ignored bool
9595
Prefered bool
96+
BinlogDumpThreads int
9697
MxsVersion int
9798
MxsHaveGtid bool
9899
RelayLogSize uint64
@@ -226,7 +227,7 @@ func (server *ServerMonitor) Ping(wg *sync.WaitGroup) {
226227
if driverErr, ok := err.(*mysql.MySQLError); ok {
227228
// access denied
228229
if driverErr.Number == 1045 {
229-
server.State = stateUnconn
230+
//server.State = stateUnconn
230231
server.ClusterGroup.SetState("ERR00004", state.State{ErrType: "ERROR", ErrDesc: fmt.Sprintf(clusterError["ERR00004"], server.URL, err.Error()), ErrFrom: "TOPO"})
231232
}
232233
}
@@ -477,6 +478,12 @@ func (server *ServerMonitor) Refresh() error {
477478

478479
// SHOW MASTER STATUS
479480
server.MasterStatus, err = dbhelper.GetMasterStatus(server.Conn)
481+
482+
err = server.Conn.Get(&server.BinlogDumpThreads, "SELECT COUNT(*) AS n FROM INFORMATION_SCHEMA.PROCESSLIST WHERE command LIKE 'binlog dump%'")
483+
if err != nil {
484+
server.ClusterGroup.SetState("ERR00014", state.State{ErrType: "ERROR", ErrDesc: fmt.Sprintf(clusterError["ERR00014"], server.URL, err), ErrFrom: "CONF"})
485+
}
486+
480487
if err != nil {
481488
// binary log might be closed for that server
482489
} else {

cluster/topology.go

+3-7
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,8 @@ func (cluster *Cluster) TopologyDiscover() error {
143143
}
144144
cluster.slaves = append(cluster.slaves, sv)
145145
} else {
146-
var n int
147-
err := sv.Conn.Get(&n, "SELECT COUNT(*) AS n FROM INFORMATION_SCHEMA.PROCESSLIST WHERE command LIKE 'binlog dump%'")
148-
if err != nil {
149-
cluster.SetState("ERR00014", state.State{ErrType: "ERROR", ErrDesc: fmt.Sprintf(clusterError["ERR00014"], sv.URL, err), ErrFrom: "CONF"})
150-
continue
151-
}
152-
if n == 0 && sv.State != stateMaster {
146+
147+
if sv.BinlogDumpThreads == 0 && sv.State != stateMaster {
153148
sv.State = stateUnconn
154149
// TODO: fix flapping in case slaves are reconnecting
155150
if cluster.conf.LogLevel > 2 {
@@ -164,6 +159,7 @@ func (cluster *Cluster) TopologyDiscover() error {
164159
cluster.master.SetReadWrite()
165160
}
166161
}
162+
// cluster.LogPrintf(LvlInfo, "Server %s was in state %s ", sv.URL, sv.State)
167163
sv.CheckPrivileges()
168164
}
169165

httpserver.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func httpserver() {
141141
// main page
142142

143143
// page to view which does not need authorization
144-
144+
router.PathPrefix("/debug/pprof/").Handler(http.DefaultServeMux)
145145
router.HandleFunc("/servers", handlerServers)
146146
router.HandleFunc("/stop", handlerStopServer)
147147
router.HandleFunc("/start", handlerStartServer)

0 commit comments

Comments
 (0)