From 0939b0a3f2c703582100909d221ac3c0910c3e73 Mon Sep 17 00:00:00 2001 From: rfyiamcool Date: Wed, 11 Oct 2023 13:04:08 +0800 Subject: [PATCH] optimize: reduce lock latency for localcache group Signed-off-by: rfyiamcool --- pkg/common/db/localcache/group.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/common/db/localcache/group.go b/pkg/common/db/localcache/group.go index 2e90d28bd..4958d91ee 100644 --- a/pkg/common/db/localcache/group.go +++ b/pkg/common/db/localcache/group.go @@ -52,18 +52,24 @@ func (g *GroupLocalCache) GetGroupMemberIDs(ctx context.Context, groupID string) if len(resp.GroupAbstractInfos) < 1 { return nil, errs.ErrGroupIDNotFound } + g.lock.Lock() - defer g.lock.Unlock() localHashInfo, ok := g.cache[groupID] if ok && localHashInfo.memberListHash == resp.GroupAbstractInfos[0].GroupMemberListHash { + g.lock.Unlock() return localHashInfo.userIDs, nil } + g.lock.Unlock() + groupMembersResp, err := g.client.Client.GetGroupMemberUserIDs(ctx, &group.GetGroupMemberUserIDsReq{ GroupID: groupID, }) if err != nil { return nil, err } + + g.lock.Lock() + defer g.lock.Unlock() g.cache[groupID] = GroupMemberIDsHash{ memberListHash: resp.GroupAbstractInfos[0].GroupMemberListHash, userIDs: groupMembersResp.UserIDs,