You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The error handling for unary vs streaming gRPC clients differ significantly. The upshot is if a service returns a *goa.ServiceError from a server-streaming method, the Recv method returns instead a *grpc.StatusError. If I've traced it back correctly, grpc/codegen/service_data.go's streamRecvT and grpc/codegen/client.go's clientEndpointInitT show the difference. From the clientEndpointInitT code I see something like this:
I'm willing to craft a PR for this with a little guidance, or totally willing to leverage someone else's hard work. :) The guidance I would need is mostly whether it's safe and how much of the clientEndpointInitT's error handling can be copied into streamRecvT; the template's data type differ significantly. Assuming this is shared with server-side receive, that deserves additional attention; I've only looked at the client-side.
The text was updated successfully, but these errors were encountered:
The error handling for unary vs streaming gRPC clients differ significantly. The upshot is if a service returns a
*goa.ServiceError
from a server-streaming method, the Recv method returns instead a*grpc.StatusError
. If I've traced it back correctly, grpc/codegen/service_data.go's streamRecvT and grpc/codegen/client.go's clientEndpointInitT show the difference. From the clientEndpointInitT code I see something like this:whereas from the streamRecvT code I see something like this:
I'm willing to craft a PR for this with a little guidance, or totally willing to leverage someone else's hard work. :) The guidance I would need is mostly whether it's safe and how much of the clientEndpointInitT's error handling can be copied into streamRecvT; the template's data type differ significantly. Assuming this is shared with server-side receive, that deserves additional attention; I've only looked at the client-side.
The text was updated successfully, but these errors were encountered: