diff --git a/stackdriver/client.go b/stackdriver/client.go index 8a9a9e02..2e46668b 100644 --- a/stackdriver/client.go +++ b/stackdriver/client.go @@ -180,7 +180,9 @@ func (c *Client) Store(req *monitoring.CreateTimeSeriesRequest) error { return } switch status.Code() { - case codes.DeadlineExceeded, codes.Unavailable: + case codes.Canceled, codes.DeadlineExceeded, + codes.PermissionDenied, + codes.Unauthenticated, codes.Unavailable: errors <- recoverableError{err} default: errors <- err diff --git a/stackdriver/client_test.go b/stackdriver/client_test.go index 297e464a..ec824702 100644 --- a/stackdriver/client_test.go +++ b/stackdriver/client_test.go @@ -82,13 +82,25 @@ func TestStoreErrorHandling(t *testing.T) { recoverable: false, }, { - status: status.New(codes.Unavailable, longErrMessage), + status: status.New(codes.Canceled, longErrMessage), recoverable: true, }, { status: status.New(codes.DeadlineExceeded, longErrMessage), recoverable: true, }, + { + status: status.New(codes.PermissionDenied, longErrMessage), + recoverable: true, + }, + { + status: status.New(codes.Unauthenticated, longErrMessage), + recoverable: true, + }, + { + status: status.New(codes.Unavailable, longErrMessage), + recoverable: true, + }, } for i, test := range tests {