From f4e87fc1648402b2ba335c6656467e53656d8368 Mon Sep 17 00:00:00 2001 From: chejinge Date: Tue, 14 Apr 2026 17:37:41 +0800 Subject: [PATCH] fix: When getting the key in the slot where migration failed, codis-proxy exited abnormally --- codis/pkg/proxy/backend.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/codis/pkg/proxy/backend.go b/codis/pkg/proxy/backend.go index 7c76a82176..ed078409c9 100644 --- a/codis/pkg/proxy/backend.go +++ b/codis/pkg/proxy/backend.go @@ -269,8 +269,9 @@ func (bc *BackendConn) run() { } var ( - errRespMasterDown = []byte("MASTERDOWN") - errRespLoading = []byte("LOADING") + errRespMasterDown = []byte("MASTERDOWN") + errRespLoading = []byte("LOADING") + errRespSlotMigrateClosed = []byte("ERR please open slotmigrate and reload slot") ) func (bc *BackendConn) loopReader(tasks <-chan *Request, c *redis.Conn, round int) (err error) { @@ -300,6 +301,11 @@ func (bc *BackendConn) loopReader(tasks <-chan *Request, c *redis.Conn, round in log.Warnf("backend conn [%p] to %s, db-%d state = DataStale, caused by 'LOADING'", bc, bc.addr, bc.database) } + case bytes.HasPrefix(resp.Value, errRespSlotMigrateClosed): + if bc.state.CompareAndSwap(stateConnected, stateDataStale) { + log.Warnf("backend conn [%p] to %s, db-%d state = DataStale, caused by 'slotmigrate disabled'", + bc, bc.addr, bc.database) + } } } bc.setResponse(r, resp, nil)