mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-08-21 12:39:57 +08:00
fix: solve incorrect batchGetIncrGroupMember when group dismissed. (#3526)
This commit is contained in:
parent
68a735ba99
commit
929c6704f3
@ -2,6 +2,7 @@ package group
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/internal/rpc/incrversion"
|
"github.com/openimsdk/open-im-server/v3/internal/rpc/incrversion"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
|
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
|
||||||
@ -11,6 +12,7 @@ import (
|
|||||||
"github.com/openimsdk/protocol/constant"
|
"github.com/openimsdk/protocol/constant"
|
||||||
pbgroup "github.com/openimsdk/protocol/group"
|
pbgroup "github.com/openimsdk/protocol/group"
|
||||||
"github.com/openimsdk/protocol/sdkws"
|
"github.com/openimsdk/protocol/sdkws"
|
||||||
|
"github.com/openimsdk/tools/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
const versionSyncLimit = 500
|
const versionSyncLimit = 500
|
||||||
@ -170,19 +172,26 @@ func (g *groupServer) GetIncrementalJoinGroup(ctx context.Context, req *pbgroup.
|
|||||||
func (g *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *pbgroup.BatchGetIncrementalGroupMemberReq) (*pbgroup.BatchGetIncrementalGroupMemberResp, error) {
|
func (g *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *pbgroup.BatchGetIncrementalGroupMemberReq) (*pbgroup.BatchGetIncrementalGroupMemberResp, error) {
|
||||||
var num int
|
var num int
|
||||||
resp := make(map[string]*pbgroup.GetIncrementalGroupMemberResp)
|
resp := make(map[string]*pbgroup.GetIncrementalGroupMemberResp)
|
||||||
|
|
||||||
for _, memberReq := range req.ReqList {
|
for _, memberReq := range req.ReqList {
|
||||||
if _, ok := resp[memberReq.GroupID]; ok {
|
if _, ok := resp[memberReq.GroupID]; ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
memberResp, err := g.GetIncrementalGroupMember(ctx, memberReq)
|
memberResp, err := g.GetIncrementalGroupMember(ctx, memberReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errors.Is(err, servererrs.ErrDismissedAlready) {
|
||||||
|
log.ZWarn(ctx, "Failed to get incremental group member", err, "groupID", memberReq.GroupID, "request", memberReq)
|
||||||
|
continue
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
resp[memberReq.GroupID] = memberResp
|
resp[memberReq.GroupID] = memberResp
|
||||||
num += len(memberResp.Insert) + len(memberResp.Update) + len(memberResp.Delete)
|
num += len(memberResp.Insert) + len(memberResp.Update) + len(memberResp.Delete)
|
||||||
if num >= versionSyncLimit {
|
if num >= versionSyncLimit {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &pbgroup.BatchGetIncrementalGroupMemberResp{RespList: resp}, nil
|
return &pbgroup.BatchGetIncrementalGroupMemberResp{RespList: resp}, nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user