From 317d69f100e8423f59f75890c2e804f402b4f34f Mon Sep 17 00:00:00 2001 From: smallnest Date: Wed, 2 Jun 2021 20:36:39 +0800 Subject: [PATCH] users can handle service errors instead of log --- server/gateway.go | 6 +++++- server/server.go | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/server/gateway.go b/server/gateway.go index c8d8b47..837331a 100644 --- a/server/gateway.go +++ b/server/gateway.go @@ -172,7 +172,11 @@ func (s *Server) handleGatewayRequest(w http.ResponseWriter, r *http.Request, pa defer protocol.FreeMsg(res) if err != nil { - log.Warnf("rpcx: failed to handle gateway request: %v", err) + if s.HandleServiceError != nil { + s.HandleServiceError(err) + } else { + log.Warnf("rpcx: gateway request: %v", err) + } wh.Set(XMessageStatusType, "Error") wh.Set(XErrorMessage, err.Error()) w.WriteHeader(500) diff --git a/server/server.go b/server/server.go index e767456..15878d1 100644 --- a/server/server.go +++ b/server/server.go @@ -96,6 +96,8 @@ type Server struct { AuthFunc func(ctx context.Context, req *protocol.Message, token string) error handlerMsgNum int32 + + HandleServiceError func(error) } // NewServer returns a server. @@ -481,7 +483,11 @@ func (s *Server) serveConn(conn net.Conn) { } res, err := s.handleRequest(ctx, req) if err != nil { - log.Warnf("rpcx: failed to handle request: %v", err) + if s.HandleServiceError != nil { + s.HandleServiceError(err) + } else { + log.Warnf("rpcx: failed to handle request: %v", err) + } } s.Plugins.DoPreWriteResponse(ctx, req, res, err)