grpcurl
grpcurl copied to clipboard
With an UnaryResponse, OnReceiveResponse is never called
Version used :
- github.com/fullstorydev/grpcurl 1.8.9
- google.golang.org/grpc 1.59.0
I am using grpcurl as a library and I discover that the call to OnReceiveResponse of the EventHandler is not called even when there is a success on the grpc call . When digging in the code, it should be called here : https://github.com/fullstorydev/grpcurl/blob/master/invoke.go#L175-L186 In the google.golang.org/grpc, the function status.FromError has a difference between its documented contract and the actual contract when there is no error :
- Documented contract : https://github.com/grpc/grpc-go/blob/v1.59.0/status/status.go#L85-L86
- Real contract : https://github.com/grpc/grpc-go/blob/v1.59.0/status/status.go#L97-L99 since https://github.com/grpc/grpc-go/commit/5da5b1f225a310a6e36fe01fb7e0883e04cda2e0 (so since version 1.52.2)
@ecdatadog, I don't see the issue. The code you highlighted in the grpc status package looks like this:
if err == nil {
return nil, true
}
So the stat.Code() == codes.OK condition will succeed, and it should print the response message.
Have you stepped through this with a debugger to verify that this is the source of the error? If so, maybe you could elaborate a little more on the actual values you are seeing from the call to status.FromError that are causing the issue?