grpcurl icon indicating copy to clipboard operation
grpcurl copied to clipboard

With an UnaryResponse, OnReceiveResponse is never called

Open ecdatadog opened this issue 2 years ago • 1 comments

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 avatar Nov 06 '23 12:11 ecdatadog

@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?

jhump avatar Nov 06 '23 15:11 jhump