From a09b6729cc1725df98ad4145997dbc243737a6b0 Mon Sep 17 00:00:00 2001 From: Eagle Wu Date: Fri, 27 Dec 2019 18:53:11 +0800 Subject: [PATCH] Fix missing recover while occur panic in handler (#1063) --- server/rpc_server.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/rpc_server.go b/server/rpc_server.go index d23401c8..a7426059 100644 --- a/server/rpc_server.go +++ b/server/rpc_server.go @@ -374,6 +374,12 @@ func (s *rpcServer) ServeConn(sock transport.Socket) { pool.Release(psock) // signal we're done wg.Done() + + // recover any panics for outbound process + if r := recover(); r != nil { + log.Log("panic recovered: ", r) + log.Log(string(debug.Stack())) + } }() for { @@ -400,6 +406,12 @@ func (s *rpcServer) ServeConn(sock transport.Socket) { pool.Release(psock) // signal we're done wg.Done() + + // recover any panics for call handler + if r := recover(); r != nil { + log.Log("panic recovered: ", r) + log.Log(string(debug.Stack())) + } }() // serve the actual request using the request router