This commit is contained in:
wangchuxiao 2023-06-08 20:29:10 +08:00
parent 89a1bf4742
commit 03d910028b

View File

@ -465,20 +465,23 @@ func (db *commonMsgDatabase) GetMsgBySeqsRange(ctx context.Context, userID strin
maxSeq = userMaxSeq maxSeq = userMaxSeq
} }
} }
newBegin := begin
newEnd := end
if begin < minSeq { if begin < minSeq {
begin = minSeq newBegin = minSeq
} }
if end > maxSeq { if end > maxSeq {
end = maxSeq newEnd = maxSeq
} }
var seqs []int64 var seqs []int64
for i := end; i > end-num; i-- { for i := newEnd; i > newEnd-num; i-- {
if i >= begin { if i >= newBegin {
seqs = append([]int64{i}, seqs...) seqs = append([]int64{i}, seqs...)
} else { } else {
break break
} }
} }
log.ZDebug(ctx, "GetMsgBySeqsRange", "first seqs", seqs)
cachedMsgs, failedSeqs, err := db.cache.GetMessagesBySeq(ctx, conversationID, seqs) cachedMsgs, failedSeqs, err := db.cache.GetMessagesBySeq(ctx, conversationID, seqs)
if err != nil { if err != nil {
if err != redis.Nil { if err != redis.Nil {
@ -500,10 +503,19 @@ func (db *commonMsgDatabase) GetMsgBySeqsRange(ctx context.Context, userID strin
successMsgs = append(successMsgs, msg) successMsgs = append(successMsgs, msg)
} }
} }
for i := 0; i < len(delSeqs); i++ {
newSeq := newBegin - 1
if newSeq >= begin {
log.ZDebug(ctx, "seq del in cache, a new seq in range append", "new seq", newSeq)
failedSeqs = append(failedSeqs, newSeq)
} else {
break
}
}
} }
log.ZDebug(ctx, "get msgs from cache", "successMsgs", successMsgs) log.ZDebug(ctx, "get msgs from cache", "successMsgs", successMsgs)
if len(failedSeqs) != 0 { if len(failedSeqs) != 0 {
log.ZDebug(ctx, "msgs not exist in redis", err, "seqs", seqs) log.ZDebug(ctx, "msgs not exist in redis", err, "seqs", failedSeqs)
} }
// get from cache or db // get from cache or db
prome.Add(prome.MsgPullFromRedisSuccessCounter, len(successMsgs)) prome.Add(prome.MsgPullFromRedisSuccessCounter, len(successMsgs))