bugfix: handle the reply of select command

v4
suxb201 1 year ago committed by suxb201
parent dd71dc3af9
commit 2f548e11ac
  1. 8
      internal/writer/redis.go

@ -9,6 +9,7 @@ import (
"github.com/alibaba/RedisShake/internal/log" "github.com/alibaba/RedisShake/internal/log"
"github.com/alibaba/RedisShake/internal/statistics" "github.com/alibaba/RedisShake/internal/statistics"
"strconv" "strconv"
"strings"
"sync" "sync"
"sync/atomic" "sync/atomic"
"time" "time"
@ -57,6 +58,10 @@ func (w *redisWriter) Write(e *entry.Entry) {
func (w *redisWriter) switchDbTo(newDbId int) { func (w *redisWriter) switchDbTo(newDbId int) {
w.client.Send("select", strconv.Itoa(newDbId)) w.client.Send("select", strconv.Itoa(newDbId))
w.DbId = newDbId w.DbId = newDbId
w.chWaitReply <- &entry.Entry{
Argv: []string{"select", strconv.Itoa(newDbId)},
CmdName: "select",
}
} }
func (w *redisWriter) flushInterval() { func (w *redisWriter) flushInterval() {
@ -75,6 +80,9 @@ func (w *redisWriter) flushInterval() {
log.Panicf("redisWriter received error. error=[%v], argv=%v, slots=%v, reply=[%v]", err, e.Argv, e.Slots, reply) log.Panicf("redisWriter received error. error=[%v], argv=%v, slots=%v, reply=[%v]", err, e.Argv, e.Slots, reply)
} }
} }
if strings.EqualFold(e.CmdName, "select") { // skip select command
continue
}
atomic.AddUint64(&w.UpdateUnansweredBytesCount, ^(e.EncodedSize - 1)) atomic.AddUint64(&w.UpdateUnansweredBytesCount, ^(e.EncodedSize - 1))
statistics.UpdateAOFAppliedOffset(uint64(e.Offset)) statistics.UpdateAOFAppliedOffset(uint64(e.Offset))
statistics.UpdateUnansweredBytesCount(atomic.LoadUint64(&w.UpdateUnansweredBytesCount)) statistics.UpdateUnansweredBytesCount(atomic.LoadUint64(&w.UpdateUnansweredBytesCount))

Loading…
Cancel
Save