GRPC Programming Model: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 17: Line 17:


=Error Handling=
=Error Handling=
https://grpc.io/docs/guides/error/
https://cloud.google.com/apis/design/errors#error_model
https://grpc.io/docs/guides/status-codes/


Use https://pkg.go.dev/google.golang.org/grpc/internal/status
Use https://pkg.go.dev/google.golang.org/grpc/internal/status
Line 23: Line 29:


<syntaxhighlight lang='go'>
<syntaxhighlight lang='go'>
ErrClientConnClosing = status.Error(codes.Canceled, "grpc: the client connection is closing")
status.Errorf(codes.InvalidArgument, "request missing required field: Name")
</syntaxhighlight>
 
https://grpc.github.io/grpc/core/md_doc_statuscodes.html?ref=apisyouwonthate.com
 
 
Converting a general error to a known status, if possible:
<syntaxhighlight lang='go'>
status.FromError()
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 20:53, 20 August 2024

Internal

Instantiate a GRPC Client

A Client Invocation

The generated typed client contains a cc reference to google.golang.org/grpc ClientConn instance, which implements ClientConnInterface.

When a typed invocation is made, cc is invoked as such:

cc.Invoke(ctx, "/blue.service.quota.v1.QuotaService/SomeMethod", in, out, opts)

Dial Options.

Error Handling

https://grpc.io/docs/guides/error/

https://cloud.google.com/apis/design/errors#error_model

https://grpc.io/docs/guides/status-codes/

Use https://pkg.go.dev/google.golang.org/grpc/internal/status

gRPC service handlers should return error created by the status package, and gRPC clients should expect a corresponding error to be returned from the RPC call.

status.Errorf(codes.InvalidArgument, "request missing required field: Name")

https://grpc.github.io/grpc/core/md_doc_statuscodes.html?ref=apisyouwonthate.com


Converting a general error to a known status, if possible:

status.FromError()