Skip to content

Commit 209a8f9

Browse files
committed
ProxySQL is not instruct to shunned reader when status is standalone #455
1 parent 07082c2 commit 209a8f9

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

cluster/prx_proxysql.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,19 +342,29 @@ func (proxy *ProxySQLProxy) Refresh() error {
342342
updated = true
343343
}
344344

345-
// if server is Standalone, set offline in ProxySQL
345+
// if server is Standalone, and writer set offline in ProxySQL
346346
if s.State == stateUnconn && bke.PrxStatus == "ONLINE" {
347-
cluster.LogPrintf(LvlInfo, "Monitor ProxySQL setting offline standalone server %s", s.URL)
347+
cluster.LogPrintf(LvlInfo, "Monitor ProxySQL setting writer offline standalone server %s", s.URL)
348348
err = psql.SetOffline(misc.Unbracket(s.Host), s.Port)
349349
if err != nil {
350350
cluster.sme.AddState("ERR00070", state.State{ErrType: "WARNING", ErrDesc: fmt.Sprintf(clusterError["ERR00070"], err, s.URL), ErrFrom: "PRX", ServerUrl: proxy.Name})
351351

352352
}
353353
updated = true
354354

355+
} else if s.State == stateUnconn && bkeread.PrxStatus == "ONLINE" && isFoundBackendRead {
356+
// if server is Standalone, and reader shunned it in ProxySQL
357+
cluster.LogPrintf(LvlInfo, "Monitor ProxySQL setting reader offline standalone server %s", s.URL)
358+
err = psql.SetOfflineSoft(misc.Unbracket(s.Host), s.Port)
359+
if err != nil {
360+
cluster.sme.AddState("ERR00070", state.State{ErrType: "WARNING", ErrDesc: fmt.Sprintf(clusterError["ERR00070"], err, s.URL), ErrFrom: "PRX", ServerUrl: proxy.Name})
361+
}
362+
updated = true
363+
364+
} else if s.State == stateMaster && (s.PrevState == stateUnconn || s.PrevState == stateFailed || (len(proxy.BackendsWrite) == 0 || !isFoundBackendWrite)) {
355365
// if the master comes back from a previously failed or standalone state, reintroduce it in
356366
// the appropriate HostGroup
357-
} else if s.State == stateMaster && (s.PrevState == stateUnconn || s.PrevState == stateFailed || (len(proxy.BackendsWrite) == 0 || !isFoundBackendWrite)) {
367+
358368
cluster.LogPrintf(LvlInfo, "Monitor ProxySQL setting online failed server %s", s.URL)
359369
if psql.ExistAsWriterOrOffline(misc.Unbracket(s.Host), s.Port) {
360370
err = psql.SetOnline(misc.Unbracket(s.Host), s.Port)

0 commit comments

Comments
 (0)