From fa8cbfb40e614c8f5130bcadd987640112317a3b Mon Sep 17 00:00:00 2001 From: duanhf2012 <6549168@qq.com> Date: Tue, 29 Aug 2023 18:23:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96rpc=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rpc/server.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/rpc/server.go b/rpc/server.go index 2b61408..c51d487 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -10,6 +10,7 @@ import ( "reflect" "strings" "time" + "runtime" ) type RpcProcessorType uint8 @@ -141,6 +142,15 @@ func (agent *RpcAgent) WriteResponse(processor IRpcProcessor, serviceMethod stri } func (agent *RpcAgent) Run() { + defer func() { + if r := recover(); r != nil { + buf := make([]byte, 4096) + l := runtime.Stack(buf, false) + errString := fmt.Sprint(r) + log.Dump(string(buf[:l]),log.String("error",errString)) + } + }() + for { data, err := agent.conn.ReadMsg() if err != nil { @@ -226,12 +236,13 @@ func (agent *RpcAgent) Run() { req.inParam, err = rpcHandler.UnmarshalInParam(req.rpcProcessor, req.RpcRequestData.GetServiceMethod(), req.RpcRequestData.GetRpcMethodId(), req.RpcRequestData.GetInParam()) if err != nil { rErr := "Call Rpc " + req.RpcRequestData.GetServiceMethod() + " Param error " + err.Error() + log.Error("call rpc param error",log.String("serviceMethod",req.RpcRequestData.GetServiceMethod()),log.ErrorAttr("error",err)) if req.requestHandle != nil { req.requestHandle(nil, RpcError(rErr)) } else { ReleaseRpcRequest(req) } - log.Error("call rpc param error",log.String("serviceMethod",req.RpcRequestData.GetServiceMethod()),log.ErrorAttr("error",err)) + continue }