16 #include "tensorflow_serving/util/retrier.h"
20 #include "absl/status/status.h"
21 #include "tensorflow/core/platform/env.h"
22 #include "tensorflow/core/platform/logging.h"
24 namespace tensorflow {
27 absl::Status Retry(
const string& description, uint32 max_num_retries,
28 int64_t retry_interval_micros,
29 const std::function<absl::Status()>& retried_fn,
30 const std::function<
bool(absl::Status)>& should_retry) {
35 Env::Default()->SleepForMicroseconds(retry_interval_micros);
36 LOG(INFO) <<
"Retrying of " << description <<
" retry: " << num_tries;
38 status = retried_fn();
40 LOG(ERROR) << description <<
" failed: " << status;
43 }
while (!status.ok() && num_tries < max_num_retries + 1 &&
44 should_retry(status));
46 if (!should_retry(status)) {
47 LOG(INFO) <<
"Retrying of " << description <<
" was cancelled.";
49 if (num_tries == max_num_retries + 1) {
50 LOG(INFO) <<
"Retrying of " << description
51 <<
" exhausted max_num_retries: " << max_num_retries;