From 6c0175540bc955059c2183ec5ac5c7ddf141c713 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Wed, 11 Jan 2023 18:39:42 +0800 Subject: [PATCH] 1 --- pkg/common/db/rocks_cache/rocks_cache.go | 2 +- pkg/common/middleware/rpc.go | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/common/db/rocks_cache/rocks_cache.go b/pkg/common/db/rocks_cache/rocks_cache.go index 2403a4038..d27f4490e 100644 --- a/pkg/common/db/rocks_cache/rocks_cache.go +++ b/pkg/common/db/rocks_cache/rocks_cache.go @@ -367,7 +367,7 @@ func GetGroupInfoFromCache(ctx context.Context, groupID string) (groupInfo *imdb return string(bytes), nil } defer func() { - trace_log.SetContextInfo(ctx, utils.GetFuncName(1), err, "groupID", groupID, "groupInfo", *groupInfo) + trace_log.SetContextInfo(ctx, utils.GetFuncName(1), err, "groupID", groupID, "groupInfo", groupInfo) }() groupInfoStr, err := db.DB.Rc.Fetch(groupInfoCache+groupID, time.Second*30*60, getGroupInfo) if err != nil { diff --git a/pkg/common/middleware/rpc.go b/pkg/common/middleware/rpc.go index 2370b296f..2311cec2d 100644 --- a/pkg/common/middleware/rpc.go +++ b/pkg/common/middleware/rpc.go @@ -2,24 +2,32 @@ package middleware import ( "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" "Open_IM/pkg/common/trace_log" "Open_IM/pkg/utils" "context" + "fmt" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/wrapperspb" "path" + "runtime/debug" ) func RpcServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { + var operationID string + defer func() { + if r := recover(); r != nil { + log.NewError(operationID, info.FullMethod, "type:", fmt.Sprintf("%T", r), "panic:", r, "stack:", string(debug.Stack())) + } + }() funcName := path.Base(info.FullMethod) md, ok := metadata.FromIncomingContext(ctx) if !ok { return nil, status.New(codes.InvalidArgument, "missing metadata").Err() } - var operationID string if opts := md.Get("operationID"); len(opts) != 1 || opts[0] == "" { return nil, status.New(codes.InvalidArgument, "operationID error").Err() } else {