mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-27 03:58:55 +08:00
Merge remote-tracking branch 'origin/errcode' into errcode
This commit is contained in:
commit
8d6bd95c62
16
pkg/common/db/cache/msg.go
vendored
16
pkg/common/db/cache/msg.go
vendored
@ -383,15 +383,25 @@ func (c *msgCache) DelUserDeleteMsgsList(ctx context.Context, conversationID str
|
|||||||
log.ZWarn(ctx, "DelUserDeleteMsgsList failed", err, "conversationID", conversationID, "seq", seq)
|
log.ZWarn(ctx, "DelUserDeleteMsgsList failed", err, "conversationID", conversationID, "seq", seq)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if len(delUsers) > 0 {
|
||||||
|
pipe := c.rdb.Pipeline()
|
||||||
|
var failedFlag bool
|
||||||
for _, userID := range delUsers {
|
for _, userID := range delUsers {
|
||||||
if err := c.rdb.SRem(ctx, c.getUserDelList(conversationID, userID), seq).Err(); err != nil {
|
err = pipe.SRem(ctx, c.getUserDelList(conversationID, userID), seq).Err()
|
||||||
|
if err != nil {
|
||||||
|
failedFlag = true
|
||||||
log.ZWarn(ctx, "DelUserDeleteMsgsList failed", err, "conversationID", conversationID, "seq", seq, "userID", userID)
|
log.ZWarn(ctx, "DelUserDeleteMsgsList failed", err, "conversationID", conversationID, "seq", seq, "userID", userID)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if err := c.rdb.Del(ctx, c.getMessageDelUserListKey(conversationID, seq)).Err(); err != nil {
|
if !failedFlag {
|
||||||
|
if err := pipe.Del(ctx, c.getMessageDelUserListKey(conversationID, seq)).Err(); err != nil {
|
||||||
log.ZWarn(ctx, "DelUserDeleteMsgsList failed", err, "conversationID", conversationID, "seq", seq)
|
log.ZWarn(ctx, "DelUserDeleteMsgsList failed", err, "conversationID", conversationID, "seq", seq)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if _, err := pipe.Exec(ctx); err != nil {
|
||||||
|
log.ZError(ctx, "pipe exec failed", err, "conversationID", conversationID, "seq", seq)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,12 +465,16 @@ func (db *commonMsgDatabase) GetMsgBySeqsRange(ctx context.Context, userID strin
|
|||||||
maxSeq = userMaxSeq
|
maxSeq = userMaxSeq
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if begin < minSeq {
|
if begin < minSeq {
|
||||||
begin = minSeq
|
begin = minSeq
|
||||||
}
|
}
|
||||||
if end > maxSeq {
|
if end > maxSeq {
|
||||||
end = maxSeq
|
end = maxSeq
|
||||||
}
|
}
|
||||||
|
if end < begin {
|
||||||
|
return 0, 0, nil, errs.ErrArgs.Wrap("seq end < begin")
|
||||||
|
}
|
||||||
var seqs []int64
|
var seqs []int64
|
||||||
for i := end; i > end-num; i-- {
|
for i := end; i > end-num; i-- {
|
||||||
if i >= begin {
|
if i >= begin {
|
||||||
@ -479,11 +483,14 @@ func (db *commonMsgDatabase) GetMsgBySeqsRange(ctx context.Context, userID strin
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
newBegin := seqs[0]
|
||||||
|
newEnd := seqs[len(seqs)-1]
|
||||||
|
log.ZDebug(ctx, "GetMsgBySeqsRange", "first seqs", seqs, "newBegin", newBegin, "newEnd", newEnd)
|
||||||
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 {
|
||||||
prome.Add(prome.MsgPullFromRedisFailedCounter, len(failedSeqs))
|
prome.Add(prome.MsgPullFromRedisFailedCounter, len(failedSeqs))
|
||||||
log.ZError(ctx, "get message from redis exception", err, conversationID, seqs)
|
log.ZError(ctx, "get message from redis exception", err, "conversationID", conversationID, "seqs", seqs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var successMsgs []*sdkws.MsgData
|
var successMsgs []*sdkws.MsgData
|
||||||
@ -500,10 +507,19 @@ func (db *commonMsgDatabase) GetMsgBySeqsRange(ctx context.Context, userID strin
|
|||||||
successMsgs = append(successMsgs, msg)
|
successMsgs = append(successMsgs, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for i := 1; i <= len(delSeqs); i++ {
|
||||||
|
newSeq := newBegin - int64(i)
|
||||||
|
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))
|
||||||
@ -672,18 +688,20 @@ func (db *commonMsgDatabase) DeleteMsgsPhysicalBySeqs(ctx context.Context, conve
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (db *commonMsgDatabase) DeleteUserMsgsBySeqs(ctx context.Context, userID string, conversationID string, seqs []int64) error {
|
func (db *commonMsgDatabase) DeleteUserMsgsBySeqs(ctx context.Context, userID string, conversationID string, seqs []int64) error {
|
||||||
msgs, _, err := db.cache.GetMessagesBySeq(ctx, conversationID, seqs)
|
cachedMsgs, _, err := db.cache.GetMessagesBySeq(ctx, conversationID, seqs)
|
||||||
if err != nil {
|
if err != nil && errs.Unwrap(err) != redis.Nil {
|
||||||
log.ZWarn(ctx, "DeleteUserMsgsBySeqs", err, "conversationID", conversationID, "seqs", seqs)
|
log.ZWarn(ctx, "DeleteUserMsgsBySeqs", err, "conversationID", conversationID, "seqs", seqs)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if len(cachedMsgs) > 0 {
|
||||||
var cacheSeqs []int64
|
var cacheSeqs []int64
|
||||||
for _, msg := range msgs {
|
for _, msg := range cachedMsgs {
|
||||||
cacheSeqs = append(cacheSeqs, msg.Seq)
|
cacheSeqs = append(cacheSeqs, msg.Seq)
|
||||||
}
|
}
|
||||||
if err := db.cache.UserDeleteMsgs(ctx, conversationID, cacheSeqs, userID); err != nil {
|
if err := db.cache.UserDeleteMsgs(ctx, conversationID, cacheSeqs, userID); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for docID, seqs := range db.msg.GetDocIDSeqsMap(conversationID, seqs) {
|
for docID, seqs := range db.msg.GetDocIDSeqsMap(conversationID, seqs) {
|
||||||
for _, seq := range seqs {
|
for _, seq := range seqs {
|
||||||
|
@ -119,7 +119,7 @@ func (l *ZapLogger) cores(isStdout bool, isJson bool, logLocation string, rotate
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
var cores []zapcore.Core
|
var cores []zapcore.Core
|
||||||
if logLocation != "" && !isStdout {
|
if logLocation != "" {
|
||||||
cores = []zapcore.Core{
|
cores = []zapcore.Core{
|
||||||
zapcore.NewCore(fileEncoder, writer, zap.NewAtomicLevelAt(l.level)),
|
zapcore.NewCore(fileEncoder, writer, zap.NewAtomicLevelAt(l.level)),
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user