Skip to content

Commit

Permalink
fix(dsmiddleware/rpcretry): don't retry when receive definitive error
Browse files Browse the repository at this point in the history
  • Loading branch information
vvakame committed Mar 30, 2022
1 parent 0203bb5 commit 99472f4
Showing 1 changed file with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions dsmiddleware/rpcretry/rpcretry.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,29 @@ func (rh *retryHandler) try(ctx context.Context, logPrefix string, f func() erro
} else if err == context.DeadlineExceeded || err == context.Canceled {
// for appengine datastore
return
} else if code := status.Code(err); code == codes.DeadlineExceeded || code == codes.Canceled {
} else if code := status.Code(err); code != codes.Unknown {
// for cloud datastore
return
// https://cloud.google.com/datastore/docs/concepts/errors?hl=en#error_codes
switch code {
case codes.Aborted,
codes.AlreadyExists,
codes.FailedPrecondition,
codes.InvalidArgument,
codes.NotFound,
codes.PermissionDenied,
codes.Unauthenticated:
return
case codes.Internal:
if try != 1 {
// Do not retry this request more than once.
return
}
case codes.Canceled:
// not documented. but this error occurred by requester parameter.
return
default:
// retry
}
}

if rh.retryLimit <= try {
Expand Down

0 comments on commit 99472f4

Please sign in to comment.