ttrpc: correctly propagate error from response
Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
parent
a763db9d1f
commit
07cd4de2f2
@ -42,6 +42,9 @@ Very new. YMMV.
|
||||
|
||||
TODO:
|
||||
|
||||
- [ ] Plumb error codes and GRPC status
|
||||
- [ ] Remove use of any type and dependency on typeurl package
|
||||
- [ ] Ensure that protocol can support streaming in the future
|
||||
- [X] Plumb error codes and GRPC status
|
||||
- [X] Remove use of any type and dependency on typeurl package
|
||||
- [X] Ensure that protocol can support streaming in the future
|
||||
- [ ] Document protocol layout
|
||||
- [ ] Add testing under concurrent load to ensure
|
||||
- [ ] Verify connection error handling
|
||||
|
12
client.go
12
client.go
@ -7,6 +7,8 @@ import (
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/gogo/protobuf/proto"
|
||||
"github.com/pkg/errors"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
type Client struct {
|
||||
@ -58,7 +60,15 @@ func (c *Client) Call(ctx context.Context, service, method string, req, resp int
|
||||
return err
|
||||
}
|
||||
|
||||
return c.codec.Unmarshal(response.Payload, resp)
|
||||
if err := c.codec.Unmarshal(response.Payload, resp); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if response.Status == nil {
|
||||
return errors.New("no status provided on response")
|
||||
}
|
||||
|
||||
return status.ErrorProto(response.Status)
|
||||
}
|
||||
|
||||
func (c *Client) Close() error {
|
||||
|
Loading…
Reference in New Issue
Block a user