From 4a544faf26dc8ef48ac357ce16e6413640d0bfd4 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Wed, 6 Mar 2024 14:27:46 +0800 Subject: [PATCH] fix: wrap the error of group user and thrid --- internal/rpc/group/group.go | 8 ++++---- internal/rpc/third/s3.go | 4 ++-- internal/rpc/third/third.go | 5 +++-- internal/rpc/user/user.go | 15 ++++++--------- pkg/common/db/cache/meta_cache.go | 2 +- pkg/common/db/cache/msg.go | 2 +- pkg/common/db/mgo/object.go | 3 ++- pkg/common/db/mgo/user.go | 14 +++++++------- pkg/common/db/unrelation/mongo.go | 7 +++---- pkg/common/discoveryregister/direct/directconn.go | 4 ++-- pkg/rpcclient/msg.go | 3 ++- tools/up35/pkg/pkg.go | 8 ++++---- 12 files changed, 37 insertions(+), 38 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 325c1edce..32ea388f4 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -120,12 +120,12 @@ func (s *groupServer) NotificationUserInfoUpdate(ctx context.Context, req *pbgro groupIDs = append(groupIDs, member.GroupID) } for _, groupID := range groupIDs { - if err := s.Notification.GroupMemberInfoSetNotification(ctx, groupID, req.UserID); err != nil { - log.ZError(ctx, "NotificationUserInfoUpdate setGroupMemberInfo notification failed", err, "groupID", groupID) + if err = s.Notification.GroupMemberInfoSetNotification(ctx, groupID, req.UserID); err != nil { + return nil, err } } - if err := s.db.DeleteGroupMemberHash(ctx, groupIDs); err != nil { - log.ZError(ctx, "NotificationUserInfoUpdate DeleteGroupMemberHash", err, "groupID", groupIDs) + if err = s.db.DeleteGroupMemberHash(ctx, groupIDs); err != nil { + return nil, err } return &pbgroup.NotificationUserInfoUpdateResp{}, nil diff --git a/internal/rpc/third/s3.go b/internal/rpc/third/s3.go index 1975163e5..f79b73a99 100644 --- a/internal/rpc/third/s3.go +++ b/internal/rpc/third/s3.go @@ -209,7 +209,7 @@ func (t *thirdServer) InitiateFormData(ctx context.Context, req *third.InitiateF } uid, err := uuid.NewRandom() if err != nil { - return nil, err + return nil, errs.Wrap(err, "uuid NewRandom failed") } if key == "" { date := time.Now().Format("20060102") @@ -224,7 +224,7 @@ func (t *thirdServer) InitiateFormData(ctx context.Context, req *third.InitiateF } mateData, err := json.Marshal(&mate) if err != nil { - return nil, err + return nil, errs.Wrap(err, "marshal failed") } resp, err := t.s3dataBase.FormData(ctx, key, req.Size, req.ContentType, duration) if err != nil { diff --git a/internal/rpc/third/third.go b/internal/rpc/third/third.go index 2bccb5c78..922890ed3 100644 --- a/internal/rpc/third/third.go +++ b/internal/rpc/third/third.go @@ -17,6 +17,7 @@ package third import ( "context" "fmt" + "github.com/OpenIMSDK/tools/errs" "net/url" "time" @@ -54,9 +55,9 @@ func Start(config *config.GlobalConfig, client discoveryregistry.SvcDiscoveryReg } apiURL := config.Object.ApiURL if apiURL == "" { - return fmt.Errorf("api url is empty") + return errs.Wrap(fmt.Errorf("api is empty")) } - if _, parseErr := url.Parse(config.Object.ApiURL); parseErr != nil { + if _, err := url.Parse(config.Object.ApiURL); err != nil { return err } if apiURL[len(apiURL)-1] != '/' { diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 02e641d20..807127396 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -16,7 +16,7 @@ package user import ( "context" - "errors" + "fmt" "math/rand" "strings" "time" @@ -78,7 +78,7 @@ func Start(config *config.GlobalConfig, client registry.SvcDiscoveryRegistry, se } users := make([]*tablerelation.UserModel, 0) if len(config.IMAdmin.UserID) != len(config.IMAdmin.Nickname) { - return errors.New("len(s.config.AppNotificationAdmin.AppManagerUid) != len(s.config.AppNotificationAdmin.Nickname)") + return errs.Wrap(fmt.Errorf("the count of ImAdmin.UserID is not equal to the count of ImAdmin.Nickname")) } for k, v := range config.IMAdmin.UserID { users = append(users, &tablerelation.UserModel{UserID: v, Nickname: config.IMAdmin.Nickname[k], AppMangerLevel: constant.AppNotificationAdmin}) @@ -113,9 +113,6 @@ func (s *userServer) GetDesignateUsers(ctx context.Context, req *pbuser.GetDesig return nil, err } resp.UsersInfo = convert.UsersDB2Pb(users) - if err != nil { - return nil, err - } return resp, nil } @@ -139,7 +136,7 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbuser.UpdateUserI } if req.UserInfo.Nickname != "" || req.UserInfo.FaceURL != "" { if err = s.groupRpcClient.NotificationUserInfoUpdate(ctx, req.UserInfo.UserID); err != nil { - log.ZError(ctx, "NotificationUserInfoUpdate", err) + return nil, err } } for _, friendID := range friends { @@ -149,7 +146,7 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbuser.UpdateUserI return nil, err } if err = s.groupRpcClient.NotificationUserInfoUpdate(ctx, req.UserInfo.UserID); err != nil { - log.ZError(ctx, "NotificationUserInfoUpdate", err, "userID", req.UserInfo.UserID) + return nil, err } return resp, nil } @@ -174,7 +171,7 @@ func (s *userServer) UpdateUserInfoEx(ctx context.Context, req *pbuser.UpdateUse } if req.UserInfo.Nickname != nil || req.UserInfo.FaceURL != nil { if err := s.groupRpcClient.NotificationUserInfoUpdate(ctx, req.UserInfo.UserID); err != nil { - log.ZError(ctx, "NotificationUserInfoUpdate", err) + return nil, err } } for _, friendID := range friends { @@ -184,7 +181,7 @@ func (s *userServer) UpdateUserInfoEx(ctx context.Context, req *pbuser.UpdateUse return nil, err } if err := s.groupRpcClient.NotificationUserInfoUpdate(ctx, req.UserInfo.UserID); err != nil { - log.ZError(ctx, "NotificationUserInfoUpdate", err, "userID", req.UserInfo.UserID) + return nil, err } return resp, nil } diff --git a/pkg/common/db/cache/meta_cache.go b/pkg/common/db/cache/meta_cache.go index 1fbb6c3b6..48dd44497 100644 --- a/pkg/common/db/cache/meta_cache.go +++ b/pkg/common/db/cache/meta_cache.go @@ -131,7 +131,7 @@ func getCache[T any](ctx context.Context, rcClient *rockscache.Client, key strin v, err := rcClient.Fetch2(ctx, key, expire, func() (s string, err error) { t, err = fn(ctx) if err != nil { - return "", errs.Wrap(err) + return "", err } bs, err := json.Marshal(t) if err != nil { diff --git a/pkg/common/db/cache/msg.go b/pkg/common/db/cache/msg.go index 1266875f1..9b488c1bf 100644 --- a/pkg/common/db/cache/msg.go +++ b/pkg/common/db/cache/msg.go @@ -471,7 +471,7 @@ func (c *msgCache) ParallelSetMessageToCache(ctx context.Context, conversationID err := wg.Wait() if err != nil { - return 0, err + return 0, errs.Wrap(err, "wg.Wait failed") } return len(msgs), nil diff --git a/pkg/common/db/mgo/object.go b/pkg/common/db/mgo/object.go index 4c333afd6..a527fa60d 100644 --- a/pkg/common/db/mgo/object.go +++ b/pkg/common/db/mgo/object.go @@ -16,6 +16,7 @@ package mgo import ( "context" + "github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/mgoutil" "github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation" @@ -33,7 +34,7 @@ func NewS3Mongo(db *mongo.Database) (relation.ObjectInfoModelInterface, error) { Options: options.Index().SetUnique(true), }) if err != nil { - return nil, err + return nil, errs.Wrap(err) } return &S3Mongo{coll: coll}, nil } diff --git a/pkg/common/db/mgo/user.go b/pkg/common/db/mgo/user.go index dcdc14d4a..9ca2eb178 100644 --- a/pkg/common/db/mgo/user.go +++ b/pkg/common/db/mgo/user.go @@ -157,7 +157,7 @@ func (u *UserMgo) AddUserCommand(ctx context.Context, userID string, Type int32, } _, err := collection.InsertOne(ctx, doc) - return err + return errs.Wrap(err) } func (u *UserMgo) DeleteUserCommand(ctx context.Context, userID string, Type int32, UUID string) error { @@ -170,7 +170,7 @@ func (u *UserMgo) DeleteUserCommand(ctx context.Context, userID string, Type int // No records found to update return errs.Wrap(errs.ErrRecordNotFound) } - return err + return errs.Wrap(err) } func (u *UserMgo) UpdateUserCommand(ctx context.Context, userID string, Type int32, UUID string, val map[string]any) error { if len(val) == 0 { @@ -184,7 +184,7 @@ func (u *UserMgo) UpdateUserCommand(ctx context.Context, userID string, Type int result, err := collection.UpdateOne(ctx, filter, update) if err != nil { - return err + return errs.Wrap(err) } if result.MatchedCount == 0 { @@ -233,7 +233,7 @@ func (u *UserMgo) GetUserCommand(ctx context.Context, userID string, Type int32) } if err := cursor.Err(); err != nil { - return nil, err + return nil, errs.Wrap(err) } return commands, nil @@ -244,7 +244,7 @@ func (u *UserMgo) GetAllUserCommand(ctx context.Context, userID string) ([]*user cursor, err := collection.Find(ctx, filter) if err != nil { - return nil, err + return nil, errs.Wrap(err) } defer cursor.Close(ctx) @@ -261,7 +261,7 @@ func (u *UserMgo) GetAllUserCommand(ctx context.Context, userID string) ([]*user } if err := cursor.Decode(&document); err != nil { - return nil, err + return nil, errs.Wrap(err) } commandInfo := &user.AllCommandInfoResp{ @@ -276,7 +276,7 @@ func (u *UserMgo) GetAllUserCommand(ctx context.Context, userID string) ([]*user } if err := cursor.Err(); err != nil { - return nil, err + return nil, errs.Wrap(err) } return commands, nil } diff --git a/pkg/common/db/unrelation/mongo.go b/pkg/common/db/unrelation/mongo.go index 363e97867..834e81237 100644 --- a/pkg/common/db/unrelation/mongo.go +++ b/pkg/common/db/unrelation/mongo.go @@ -102,12 +102,11 @@ func buildMongoURI(config *config.GlobalConfig) string { maxPoolSize = fmt.Sprint(config.Mongo.MaxPoolSize) } - uriFormat := "mongodb://%s/%s?maxPoolSize=%s" if username != "" && password != "" { - uriFormat = "mongodb://%s:%s@%s/%s?maxPoolSize=%s" - return fmt.Sprintf(uriFormat, username, password, address, database, maxPoolSize) + + return fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%s", username, password, address, database, maxPoolSize) } - return fmt.Sprintf(uriFormat, address, database, maxPoolSize) + return fmt.Sprintf("mongodb://%s/%s?maxPoolSize=%s", address, database, maxPoolSize) } func shouldRetry(err error) bool { diff --git a/pkg/common/discoveryregister/direct/directconn.go b/pkg/common/discoveryregister/direct/directconn.go index ced209602..0e5b75b90 100644 --- a/pkg/common/discoveryregister/direct/directconn.go +++ b/pkg/common/discoveryregister/direct/directconn.go @@ -100,7 +100,7 @@ func (cd *ConnDirect) GetConns(ctx context.Context, for _, port := range ports { conn, err := cd.dialServiceWithoutResolver(ctx, fmt.Sprintf(cd.config.Rpc.ListenIP+":%d", port), append(cd.additionalOpts, opts...)...) if err != nil { - fmt.Printf("connect to port %d failed,serviceName %s, IP %s\n", port, serviceName, cd.config.Rpc.ListenIP) + return nil, errs.Wrap(fmt.Errorf("connect to port %d failed,serviceName %s, IP %s\n", port, serviceName, cd.config.Rpc.ListenIP)) } connections = append(connections, conn) } @@ -166,7 +166,7 @@ func (cd *ConnDirect) dialServiceWithoutResolver(ctx context.Context, address st conn, err := grpc.DialContext(ctx, address, options...) if err != nil { - return nil, err + return nil, errs.Wrap(err) } return conn, nil } diff --git a/pkg/rpcclient/msg.go b/pkg/rpcclient/msg.go index 3db39925e..4daf897a1 100644 --- a/pkg/rpcclient/msg.go +++ b/pkg/rpcclient/msg.go @@ -19,6 +19,7 @@ import ( "encoding/json" "fmt" "github.com/OpenIMSDK/tools/errs" + util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" "github.com/OpenIMSDK/protocol/constant" "github.com/OpenIMSDK/protocol/msg" @@ -135,7 +136,7 @@ type Message struct { func NewMessage(discov discoveryregistry.SvcDiscoveryRegistry, config *config.GlobalConfig) *Message { conn, err := discov.GetConn(context.Background(), config.RpcRegisterName.OpenImMsgName) if err != nil { - panic(err) + util.ExitWithError(err) } client := msg.NewMsgClient(conn) return &Message{discov: discov, conn: conn, Client: client, Config: config} diff --git a/tools/up35/pkg/pkg.go b/tools/up35/pkg/pkg.go index 1348172d2..ed98fc282 100644 --- a/tools/up35/pkg/pkg.go +++ b/tools/up35/pkg/pkg.go @@ -160,7 +160,7 @@ func NewTask[A interface{ TableName() string }, B any, C any](gormDB *gorm.DB, m tableName := zero.TableName() coll, err := getColl(obj) if err != nil { - return fmt.Errorf("get mongo collection %s failed, err: %w", tableName, err) + return errs.Wrap(fmt.Errorf("get mongo collection %s failed, err: %w", tableName, err)) } var count int defer func() { @@ -173,7 +173,7 @@ func NewTask[A interface{ TableName() string }, B any, C any](gormDB *gorm.DB, m if mysqlErr, ok := err.(*mysql.MySQLError); ok && mysqlErr.Number == 1146 { return nil // table not exist } - return fmt.Errorf("find mysql table %s failed, err: %w", tableName, err) + return errs.Wrap(fmt.Errorf("find mysql table %s failed, err: %w", tableName, err)) } if len(res) == 0 { return nil @@ -183,7 +183,7 @@ func NewTask[A interface{ TableName() string }, B any, C any](gormDB *gorm.DB, m temp[i] = convert(res[i]) } if err := insertMany(coll, temp); err != nil { - return fmt.Errorf("insert mongo table %s failed, err: %w", tableName, err) + return errs.Wrap(fmt.Errorf("insert mongo table %s failed, err: %w", tableName, err)) } count += len(res) if len(res) < batch { @@ -196,7 +196,7 @@ func NewTask[A interface{ TableName() string }, B any, C any](gormDB *gorm.DB, m func insertMany(coll *mongo.Collection, objs []any) error { if _, err := coll.InsertMany(context.Background(), objs); err != nil { if !mongo.IsDuplicateKeyError(err) { - return err + return errs.Wrap(err) } } for i := range objs {