Method: SDM::Client#shouldRetry

Defined in:
lib/strongdm.rb

#shouldRetry(iter, err) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/strongdm.rb', line 94

def shouldRetry(iter, err)
  if (iter >= @max_retries - 1)
    return false
  end
  if not err.is_a? GRPC::BadStatus
    return true
  end
  porcelainErr = Plumbing::convert_error_to_porcelain(err)
  if (not @expose_rate_limit_errors) and (porcelainErr.is_a? RateLimitError)
    sleep_for = porcelainErr.rate_limit.reset_at - Time.now
    # If timezones or clock drift causes this calculation to fail,
    # wait at most one minute.
    if sleep_for < 0 or sleep_for > 60
      sleep_for = 60
    end
    sleep(sleep_for)
    return true
  end
  return err.code() == 13
end