Merge pull request #752 from printfcoder/master
recover gPRC handler if panic
This commit is contained in:
		| @@ -338,6 +338,11 @@ func (g *grpcServer) processRequest(stream grpc.ServerStream, service *service, | |||||||
|  |  | ||||||
| 		// define the handler func | 		// define the handler func | ||||||
| 		fn := func(ctx context.Context, req server.Request, rsp interface{}) error { | 		fn := func(ctx context.Context, req server.Request, rsp interface{}) error { | ||||||
|  | 			defer func() { | ||||||
|  | 				if r := recover(); r != nil { | ||||||
|  | 					log.Logf("handler %s panic recovered, err: %s", mtype.method.Name, r) | ||||||
|  | 				} | ||||||
|  | 			}() | ||||||
| 			returnValues = function.Call([]reflect.Value{service.rcvr, mtype.prepareContext(ctx), reflect.ValueOf(argv.Interface()), reflect.ValueOf(rsp)}) | 			returnValues = function.Call([]reflect.Value{service.rcvr, mtype.prepareContext(ctx), reflect.ValueOf(argv.Interface()), reflect.ValueOf(rsp)}) | ||||||
|  |  | ||||||
| 			// The return value for the method is an error. | 			// The return value for the method is an error. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user