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:
|
TODO:
|
||||||
|
|
||||||
- [ ] Plumb error codes and GRPC status
|
- [X] Plumb error codes and GRPC status
|
||||||
- [ ] Remove use of any type and dependency on typeurl package
|
- [X] Remove use of any type and dependency on typeurl package
|
||||||
- [ ] Ensure that protocol can support streaming in the future
|
- [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"
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/gogo/protobuf/proto"
|
"github.com/gogo/protobuf/proto"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
"google.golang.org/grpc/status"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Client struct {
|
type Client struct {
|
||||||
@ -58,7 +60,15 @@ func (c *Client) Call(ctx context.Context, service, method string, req, resp int
|
|||||||
return err
|
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 {
|
func (c *Client) Close() error {
|
||||||
|
Loading…
Reference in New Issue
Block a user