From 57d96b85f1edffa702c776c963e0f4f8f496d32b Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 16 Jun 2022 14:47:39 +0800 Subject: [PATCH 1/7] add global recv opt --- pkg/common/db/model.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 895bea53a..bc8af133d 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -125,7 +125,6 @@ func init() { DB.rdb = go_redis.NewClusterClient(&go_redis.ClusterOptions{ Addrs: []string{config.Config.Redis.DBAddress}, PoolSize: 50, - Password: config.Config.Redis.DBPassWord, }) _, err = DB.rdb.Ping(ctx).Result() if err != nil { From 89aef130a555733b2eb6f6da515ce64225525fca Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 16 Jun 2022 14:51:36 +0800 Subject: [PATCH 2/7] Handling exception: getcdv3.GetConn == nil --- internal/rpc/group/group.go | 121 +++++++++++++++++++++++++++++++----- 1 file changed, 104 insertions(+), 17 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 79c186013..147e06b63 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -187,7 +187,12 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR GroupID: groupId, OperationID: req.OperationID, } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.CreateGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) if err != nil { @@ -332,7 +337,12 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite c.IsNotInGroup = false c.Ex = v.Ex reqPb.Conversation = &c - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { @@ -349,7 +359,12 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite c.GroupID = req.GroupID c.IsNotInGroup = false reqPb.Conversation = &c - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { @@ -371,7 +386,12 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite GroupID: req.GroupID, OperationID: req.OperationID, } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) if err != nil { @@ -550,7 +570,14 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou c.GroupID = req.GroupID c.IsNotInGroup = true reqPb.Conversation = &c - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + resp.ErrCode = constant.ErrInternal.ErrCode + resp.ErrMsg = errMsg + return &resp, nil + } client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { @@ -574,7 +601,12 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou GroupID: req.GroupID, OperationID: req.OperationID, } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.ReduceGroupMemberFromCache(context.Background(), reduceGroupMemberFromCacheReq) if err != nil { @@ -731,7 +763,12 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G c.Ex = conversation.Ex } reqPb.Conversation = &c - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { @@ -740,7 +777,12 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String()) } addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{OperationID: req.OperationID, GroupID: req.GroupID, UserIDList: []string{req.FromUserID}} - etcdCacheConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdCacheConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } cacheClient := pbCache.NewCacheClient(etcdCacheConn) cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) if err != nil { @@ -834,7 +876,12 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) c.GroupID = req.GroupID c.IsNotInGroup = true reqPb.Conversation = &c - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { @@ -848,7 +895,12 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) GroupID: req.GroupID, OperationID: req.OperationID, } - etcdConnCache := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConnCache := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } cacheClient := pbCache.NewCacheClient(etcdConnCache) cacheResp, err := cacheClient.ReduceGroupMemberFromCache(context.Background(), reduceGroupMemberFromCacheReq) if err != nil { @@ -936,7 +988,12 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf if req.GroupInfo.Notification != "" { //get group member user id getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: req.OperationID, GroupID: req.GroupInfo.GroupID} - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, http.WrapError(constant.ErrInternal) + } client := pbCache.NewCacheClient(etcdConn) cacheResp, err := client.GetGroupMemberIDListFromCache(context.Background(), getGroupMemberIDListFromCacheReq) if err != nil { @@ -960,7 +1017,12 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf conversationReq.FieldType = constant.FieldGroupAtType conversation.GroupAtType = constant.GroupNotification conversationReq.UserIDList = cacheResp.UserIDList - nEtcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName) + nEtcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, http.WrapError(constant.ErrInternal) + } nClient := pbConversation.NewConversationClient(nEtcdConn) conversationReply, err := nClient.ModifyConversationField(context.Background(), &conversationReq) if err != nil { @@ -1156,7 +1218,12 @@ func (s *groupServer) OperateUserRole(_ context.Context, req *pbGroup.OperateUse log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMaster failed", err.Error()) return resp, http.WrapError(constant.ErrDB) } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return resp, http.WrapError(constant.ErrInternal) + } client := pbGroup.NewGroupClient(etcdConn) var reqPb pbGroup.TransferGroupOwnerReq reqPb.OperationID = req.OperationID @@ -1237,7 +1304,12 @@ func (s *groupServer) RemoveGroupMembersCMS(_ context.Context, req *pbGroup.Remo c.GroupID = req.GroupId c.IsNotInGroup = true reqPb.Conversation = &c - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return resp, http.WrapError(constant.ErrInternal) + } client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { @@ -1252,7 +1324,12 @@ func (s *groupServer) RemoveGroupMembersCMS(_ context.Context, req *pbGroup.Remo GroupID: req.GroupId, OperationID: req.OperationID, } - etcdConnCache := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConnCache := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + if etcdConnCache == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return resp, http.WrapError(constant.ErrInternal) + } cacheClient := pbCache.NewCacheClient(etcdConnCache) cacheResp, err := cacheClient.ReduceGroupMemberFromCache(context.Background(), reduceGroupMemberFromCacheReq) if err != nil { @@ -1308,7 +1385,12 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou GroupID: req.GroupId, OperationID: req.OperationId, } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationId) + if etcdConn == nil { + errMsg := req.OperationId + "getcdv3.GetConn == nil" + log.NewError(req.OperationId, errMsg) + return resp, http.WrapError(constant.ErrInternal) + } cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) if err != nil { @@ -1393,7 +1475,12 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou c.GroupID = req.GroupID c.IsNotInGroup = true reqPb.Conversation = &c - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { From 98821c95b6ab25593071a6ee6151baa04d4e9d6f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 16 Jun 2022 14:55:38 +0800 Subject: [PATCH 3/7] Handling exception: getcdv3.GetConn == nil --- internal/rpc/friend/firend.go | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/internal/rpc/friend/firend.go b/internal/rpc/friend/firend.go index 4e3172b44..5c2c2a359 100644 --- a/internal/rpc/friend/firend.go +++ b/internal/rpc/friend/firend.go @@ -99,7 +99,12 @@ func (s *friendServer) AddBlacklist(ctx context.Context, req *pbFriend.AddBlackl } log.NewInfo(req.CommID.OperationID, "AddBlacklist rpc ok ", req.CommID.FromUserID, req.CommID.ToUserID) reqAddBlackUserToCache := &pbCache.AddBlackUserToCacheReq{UserID: req.CommID.FromUserID, BlackUserID: req.CommID.ToUserID, OperationID: req.CommID.OperationID} - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.CommID.OperationID) + if etcdConn == nil { + errMsg := req.CommID.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.CommID.OperationID, errMsg) + return &pbFriend.AddBlacklistResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.AddBlackUserToCache(context.Background(), reqAddBlackUserToCache) if err != nil { @@ -263,7 +268,12 @@ func (s *friendServer) AddFriendResponse(ctx context.Context, req *pbFriend.AddF } // cache rpc addFriendToCacheReq := &pbCache.AddFriendToCacheReq{OperationID: req.CommID.OperationID} - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.CommID.OperationID) + if etcdConn == nil { + errMsg := req.CommID.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.CommID.OperationID, errMsg) + return &pbFriend.AddFriendResponseResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } client := pbCache.NewCacheClient(etcdConn) addFriendToCacheReq.UserID = req.CommID.ToUserID addFriendToCacheReq.FriendID = req.CommID.FromUserID @@ -318,7 +328,12 @@ func (s *friendServer) DeleteFriend(ctx context.Context, req *pbFriend.DeleteFri } log.NewInfo(req.CommID.OperationID, "DeleteFriend rpc ok") reduceFriendFromCache := &pbCache.ReduceFriendFromCacheReq{OperationID: req.CommID.OperationID, UserID: req.CommID.FromUserID, FriendID: req.CommID.ToUserID} - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.CommID.OperationID) + if etcdConn == nil { + errMsg := req.CommID.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.CommID.OperationID, errMsg) + return &pbFriend.DeleteFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } client := pbCache.NewCacheClient(etcdConn) respPb, err := client.ReduceFriendFromCache(context.Background(), reduceFriendFromCache) if err != nil { @@ -399,7 +414,13 @@ func (s *friendServer) RemoveBlacklist(ctx context.Context, req *pbFriend.Remove } log.NewInfo(req.CommID.OperationID, "rpc RemoveBlacklist ok ") reqReduceBlackUserFromCache := &pbCache.ReduceBlackUserFromCacheReq{UserID: req.CommID.FromUserID, BlackUserID: req.CommID.ToUserID, OperationID: req.CommID.OperationID} - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.CommID.OperationID) + if etcdConn == nil { + errMsg := req.CommID.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.CommID.OperationID, errMsg) + return &pbFriend.RemoveBlacklistResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil + } + cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.ReduceBlackUserFromCache(context.Background(), reqReduceBlackUserFromCache) if err != nil { From 966cb2491149598e9e6b200f5534e723a5d8be7f Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 16 Jun 2022 15:02:29 +0800 Subject: [PATCH 4/7] add global recv opt --- docker-compose.yaml | 2 +- script/path_info.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index e1d2a98b2..e75b022a4 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -75,7 +75,7 @@ services: TZ: Asia/Shanghai KAFKA_BROKER_ID: 0 KAFKA_ZOOKEEPER_CONNECT: 127.0.0.1:2181 - KAFKA_CREATE_TOPICS: "ws2ms_chat:2:1,ms2ps_chat:2:1,msg_to_mongo:2:1" + KAFKA_CREATE_TOPICS: "ws2ms_chat:8:1,ms2ps_chat:2:1,msg_to_mongo:2:1" KAFKA_ADVERTISED_LISTENERS: INSIDE://127.0.0.1:9092,OUTSIDE://103.116.45.174:9093 KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" diff --git a/script/path_info.cfg b/script/path_info.cfg index 0a47f51fd..17382cbfd 100644 --- a/script/path_info.cfg +++ b/script/path_info.cfg @@ -16,7 +16,7 @@ push_source_root="../cmd/open_im_push/" msg_transfer_name="open_im_msg_transfer" msg_transfer_binary_root="../bin/" msg_transfer_source_root="../cmd/open_im_msg_transfer/" -msg_transfer_service_num=2 +msg_transfer_service_num=4 sdk_server_name="open_im_sdk_server" From 167ebd6975d8a9c3fee74cd9808fe502b264d9dd Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 16 Jun 2022 15:09:37 +0800 Subject: [PATCH 5/7] Handling exception: getcdv3.GetConn == nil --- internal/api/organization/organization.go | 98 +++++++++++-- internal/cms_api/admin/admin.go | 10 +- internal/cms_api/group/group.go | 164 ++++++++++++++++++---- 3 files changed, 231 insertions(+), 41 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 9d134a253..5998fb0dd 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -36,7 +36,14 @@ func CreateDepartment(c *gin.Context) { } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.CreateDepartment(context.Background(), req) if err != nil { @@ -72,7 +79,14 @@ func UpdateDepartment(c *gin.Context) { } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.UpdateDepartment(context.Background(), req) if err != nil { @@ -106,7 +120,13 @@ func GetSubDepartment(c *gin.Context) { } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.GetSubDepartment(context.Background(), req) if err != nil { @@ -144,7 +164,13 @@ func DeleteDepartment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.DeleteDepartment(context.Background(), req) if err != nil { @@ -180,7 +206,13 @@ func CreateOrganizationUser(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.CreateOrganizationUser(context.Background(), req) if err != nil { @@ -215,7 +247,13 @@ func UpdateOrganizationUser(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.UpdateOrganizationUser(context.Background(), req) if err != nil { @@ -251,7 +289,13 @@ func CreateDepartmentMember(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.CreateDepartmentMember(context.Background(), req) if err != nil { @@ -286,7 +330,13 @@ func GetUserInDepartment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.GetUserInDepartment(context.Background(), req) if err != nil { @@ -322,7 +372,13 @@ func UpdateUserInDepartment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.UpdateUserInDepartment(context.Background(), req) if err != nil { @@ -357,7 +413,13 @@ func DeleteOrganizationUser(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.DeleteOrganizationUser(context.Background(), req) if err != nil { @@ -392,7 +454,13 @@ func GetDepartmentMember(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.GetDepartmentMember(context.Background(), req) if err != nil { @@ -427,7 +495,13 @@ func DeleteUserInDepartment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := rpc.NewOrganizationClient(etcdConn) RpcResp, err := client.DeleteUserInDepartment(context.Background(), req) if err != nil { diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index ff8882369..a741c8016 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -12,6 +12,7 @@ import ( "context" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" + "net/http" "strings" "github.com/gin-gonic/gin" @@ -68,7 +69,14 @@ func AdminLogin(c *gin.Context) { } reqPb.Secret = req.Secret reqPb.AdminID = req.AdminName - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName) + reqPb.OperationID = utils.OperationIDGenerator() + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbAdmin.NewAdminCMSClient(etcdConn) respPb, err := client.AdminLogin(context.Background(), &reqPb) if err != nil { diff --git a/internal/cms_api/group/group.go b/internal/cms_api/group/group.go index 69b9e32fc..5d0508910 100644 --- a/internal/cms_api/group/group.go +++ b/internal/cms_api/group/group.go @@ -10,6 +10,7 @@ import ( commonPb "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" + "net/http" "strings" pbGroup "Open_IM/pkg/proto/group" @@ -28,9 +29,16 @@ func GetGroupById(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) respPb, err := client.GetGroupById(context.Background(), &reqPb) if err != nil { @@ -60,10 +68,17 @@ func GetGroups(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.Pagination = &commonPb.RequestPagination{} utils.CopyStructFields(&reqPb.Pagination, req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) respPb, err := client.GetGroups(context.Background(), &reqPb) if err != nil { @@ -101,11 +116,18 @@ func GetGroupByName(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupName = req.GroupName reqPb.Pagination = &commonPb.RequestPagination{} utils.CopyStructFields(&reqPb.Pagination, req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) respPb, err := client.GetGroup(context.Background(), &reqPb) if err != nil { @@ -143,7 +165,8 @@ func CreateGroup(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupInfo = &commonPb.GroupInfo{} reqPb.GroupInfo.GroupName = req.GroupName reqPb.GroupInfo.CreatorUserID = req.GroupMasterId @@ -155,7 +178,13 @@ func CreateGroup(c *gin.Context) { RoleLevel: 1, }) } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) _, err := client.CreateGroup(context.Background(), &reqPb) if err != nil { @@ -176,10 +205,18 @@ func BanGroupChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupBanChat - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + client := pbGroup.NewGroupClient(etcdConn) _, err := client.OperateGroupStatus(context.Background(), &reqPb) if err != nil { @@ -201,10 +238,17 @@ func BanPrivateChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupBanPrivateChat - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) _, err := client.OperateGroupStatus(context.Background(), &reqPb) if err != nil { @@ -225,10 +269,17 @@ func OpenGroupChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupOk - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) _, err := client.OperateGroupStatus(context.Background(), &reqPb) if err != nil { @@ -249,10 +300,18 @@ func OpenPrivateChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupOk - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + client := pbGroup.NewGroupClient(etcdConn) _, err := client.OperateGroupStatus(context.Background(), &reqPb) if err != nil { @@ -274,14 +333,21 @@ func GetGroupMembers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.Pagination = &commonPb.RequestPagination{ PageNumber: int32(req.PageNumber), ShowNumber: int32(req.ShowNumber), } reqPb.GroupId = req.GroupId reqPb.UserName = req.UserName - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) respPb, err := client.GetGroupMembersCMS(context.Background(), &reqPb) if err != nil { @@ -317,10 +383,17 @@ func AddGroupMembers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + reqPb.OperationId = utils.OperationIDGenerator() log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.UserIds = req.Members reqPb.GroupId = req.GroupId - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationId) + if etcdConn == nil { + errMsg := reqPb.OperationId + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationId, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) respPb, err := client.AddGroupMembersCMS(context.Background(), &reqPb) if err != nil { @@ -345,10 +418,17 @@ func RemoveGroupMembers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.UserIds = req.Members reqPb.GroupId = req.GroupId - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) respPb, err := client.RemoveGroupMembersCMS(context.Background(), &reqPb) if err != nil { @@ -373,9 +453,16 @@ func DeleteGroup(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) _, err := client.DeleteGroup(context.Background(), &reqPb) if err != nil { @@ -397,11 +484,18 @@ func SetGroupMaster(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.UserId = req.UserId reqPb.RoleLevel = constant.GroupOwner - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) _, err := client.OperateUserRole(context.Background(), &reqPb) if err != nil { @@ -423,11 +517,18 @@ func SetGroupOrdinaryUsers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.UserId = req.UserId reqPb.RoleLevel = constant.GroupOrdinaryUsers - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) _, err := client.OperateUserRole(context.Background(), &reqPb) if err != nil { @@ -444,7 +545,8 @@ func AlterGroupInfo(c *gin.Context) { _ cms_api_struct.SetGroupMasterResponse reqPb pbGroup.SetGroupInfoReq ) - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) if err := c.BindJSON(&req); err != nil { log.NewError(reqPb.OperationID, utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) openIMHttp.RespHttp200(c, constant.ErrArgs, nil) @@ -459,7 +561,13 @@ func AlterGroupInfo(c *gin.Context) { FaceURL: req.ProfilePhoto, GroupType: int32(req.GroupType), } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbGroup.NewGroupClient(etcdConn) _, err := client.SetGroupInfo(context.Background(), &reqPb) if err != nil { From abb9ebaf76abcced023e7a68628280b879c102e1 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 16 Jun 2022 15:10:15 +0800 Subject: [PATCH 6/7] Handling exception: getcdv3.GetConn == nil --- internal/cms_api/group/group.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cms_api/group/group.go b/internal/cms_api/group/group.go index 5d0508910..8eb53a8bf 100644 --- a/internal/cms_api/group/group.go +++ b/internal/cms_api/group/group.go @@ -72,7 +72,7 @@ func GetGroups(c *gin.Context) { log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.Pagination = &commonPb.RequestPagination{} utils.CopyStructFields(&reqPb.Pagination, req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, reqPb.OperationID) if etcdConn == nil { errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" log.NewError(reqPb.OperationID, errMsg) From d058cacb38505ca88e2ffe58132f28b079db8179 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 16 Jun 2022 15:19:39 +0800 Subject: [PATCH 7/7] Handling exception: getcdv3.GetConn == nil --- internal/api/chat/send_msg.go | 12 +- internal/cms_api/user/user.go | 142 +++++++++++++++++----- internal/rpc/organization/organization.go | 23 +++- 3 files changed, 139 insertions(+), 38 deletions(-) diff --git a/internal/api/chat/send_msg.go b/internal/api/chat/send_msg.go index b75cd0ddd..af5bf5d7b 100644 --- a/internal/api/chat/send_msg.go +++ b/internal/api/chat/send_msg.go @@ -69,9 +69,15 @@ func SendMsg(c *gin.Context) { token := c.Request.Header.Get("token") log.NewInfo(params.OperationID, "api call success to sendMsgReq", params) pbData := newUserSendMsgReq(token, ¶ms) - log.Info("", "", "api SendMsg call start..., [data: %s]", pbData.String()) + log.Info(params.OperationID, "", "api SendMsg call start..., [data: %s]", pbData.String()) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName, params.OperationID) + if etcdConn == nil { + errMsg := params.OperationID + "getcdv3.GetConn == nil" + log.NewError(params.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pbChat.NewChatClient(etcdConn) log.Info("", "", "api SendMsg call, api call rpc...") @@ -82,7 +88,7 @@ func SendMsg(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "SendMsg rpc failed, " + err.Error()}) return } - log.Info("", "", "api SendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String()) + log.Info(params.OperationID, "", "api SendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String()) c.JSON(http.StatusOK, gin.H{ "errCode": reply.ErrCode, diff --git a/internal/cms_api/user/user.go b/internal/cms_api/user/user.go index f8d96e35e..09513a98e 100644 --- a/internal/cms_api/user/user.go +++ b/internal/cms_api/user/user.go @@ -29,9 +29,17 @@ func GetUserById(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + client := pb.NewUserClient(etcdConn) respPb, err := client.GetUserById(context.Background(), &reqPb) if err != nil { @@ -44,7 +52,7 @@ func GetUserById(c *gin.Context) { return } utils.CopyStructFields(&resp, respPb.User) - log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -54,7 +62,8 @@ func GetUsersByName(c *gin.Context) { resp cms_api_struct.GetUsersByNameResponse reqPb pb.GetUsersByNameReq ) - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) if err := c.ShouldBindQuery(&req); err != nil { log.NewError(reqPb.OperationID, utils.GetSelfFuncName(), "ShouldBindQuery failed", err.Error()) openIMHttp.RespHttp200(c, constant.ErrArgs, nil) @@ -65,7 +74,13 @@ func GetUsersByName(c *gin.Context) { PageNumber: int32(req.PageNumber), ShowNumber: int32(req.ShowNumber), } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) respPb, err := client.GetUsersByName(context.Background(), &reqPb) if err != nil { @@ -77,7 +92,7 @@ func GetUsersByName(c *gin.Context) { resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.CurrentPage = int(respPb.Pagination.CurrentPage) resp.UserNums = respPb.UserNums - log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -93,9 +108,16 @@ func GetUsers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.Pagination, &req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) respPb, err := client.GetUsers(context.Background(), &reqPb) if err != nil { @@ -106,7 +128,7 @@ func GetUsers(c *gin.Context) { resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.CurrentPage = int(respPb.Pagination.CurrentPage) resp.UserNums = respPb.UserNums - log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -122,15 +144,22 @@ func ResignUser(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()}) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) _, err := client.ResignUser(context.Background(), &reqPb) if err != nil { openIMHttp.RespHttp200(c, err, resp) } - log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -145,13 +174,20 @@ func AlterUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) _, err := client.AlterUser(context.Background(), &reqPb) if err != nil { - log.NewError("0", "microserver failed ", err.Error()) + log.NewError(reqPb.OperationID, "microserver failed ", err.Error()) openIMHttp.RespHttp200(c, err, nil) } openIMHttp.RespHttp200(c, constant.OK, nil) @@ -167,9 +203,16 @@ func AddUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) _, err := client.AddUser(context.Background(), &reqPb) if err != nil { @@ -191,9 +234,16 @@ func BlockUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) fmt.Println(reqPb) _, err := client.BlockUser(context.Background(), &reqPb) @@ -215,16 +265,23 @@ func UnblockUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) _, err := client.UnBlockUser(context.Background(), &reqPb) if err != nil { openIMHttp.RespHttp200(c, err, resp) return } - log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -241,10 +298,17 @@ func GetBlockUsers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.Pagination, &req) log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "blockUsers", reqPb.Pagination, req) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) respPb, err := client.GetBlockUsers(context.Background(), &reqPb) if err != nil { @@ -268,7 +332,7 @@ func GetBlockUsers(c *gin.Context) { resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.CurrentPage = int(respPb.Pagination.CurrentPage) resp.UserNums = respPb.UserNums - log.NewInfo("", utils.GetSelfFuncName(), "req: ", resp) + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -283,20 +347,27 @@ func GetBlockUserById(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.UserId = req.UserId - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) respPb, err := client.GetBlockUserById(context.Background(), &reqPb) if err != nil { - log.NewError("0", "GetBlockUserById rpc failed ", err.Error()) + log.NewError(reqPb.OperationID, "GetBlockUserById rpc failed ", err.Error()) openIMHttp.RespHttp200(c, err, nil) return } resp.EndDisableTime = respPb.BlockUser.EndDisableTime resp.BeginDisableTime = respPb.BlockUser.BeginDisableTime utils.CopyStructFields(&resp, respPb.BlockUser.User) - log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -310,13 +381,20 @@ func DeleteUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } - log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) + reqPb.OperationID = utils.OperationIDGenerator() + log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.UserId = req.UserId - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } client := pb.NewUserClient(etcdConn) _, err := client.DeleteUser(context.Background(), &reqPb) if err != nil { - log.NewError("0", "DeleteUser rpc failed ", err.Error()) + log.NewError(reqPb.OperationID, "DeleteUser rpc failed ", err.Error()) openIMHttp.RespHttp200(c, err, nil) return } diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 8f07867e9..81659ef60 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -114,7 +114,14 @@ func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.Crea log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + resp.ErrCode = constant.ErrInternal.ErrCode + resp.ErrMsg = errMsg + return resp, nil + } client := groupRpc.NewGroupClient(etcdConn) createGroupReq := &groupRpc.CreateGroupReq{ InitMemberList: []*groupRpc.GroupAddMemberInfo{}, @@ -228,7 +235,12 @@ func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rp utils.CopyStructFields(authReq.UserInfo, req.OrganizationUser) authReq.OperationID = req.OperationID if req.IsRegister { - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } client := pbAuth.NewAuthClient(etcdConn) reply, err := client.UserRegister(context.Background(), authReq) if err != nil { @@ -269,7 +281,12 @@ func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rp authReq := &pbAuth.UserRegisterReq{UserInfo: &open_im_sdk.UserInfo{}} utils.CopyStructFields(authReq.UserInfo, req.OrganizationUser) authReq.OperationID = req.OperationID - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetConn == nil" + log.NewError(req.OperationID, errMsg) + return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } client := pbAuth.NewAuthClient(etcdConn) reply, err := client.UserRegister(context.Background(), authReq)