Crate pravega_client_retry[−][src]
Retry is a crate for retrying something that can fail with exponential backoff. It is designed to have a declarative interface for ease of use. It can be used as follows:
let retry_policy = RetryWithBackoff::default().max_tries(1); let mut collection = vec![1, 2].into_iter(); let value = retry_sync(retry_policy, || match collection.next() { Some(n) if n == 2 => RetryResult::Success(n), Some(_) => RetryResult::Retry("not 2"), None => RetryResult::Fail("to the end"), }).unwrap(); assert_eq!(value, 2);
The above will retry the code 1 times if it throws Err(Retry::Retry). If it throws a Err(Retry::Err) or returns successfully it will return immediately. The delay following each of the filed attempts would be 1, 10,respectively. If all retries fail, it will return Err(RetryErr) that has error message.
Modules
retry_async | |
retry_policy | |
retry_result | |
retry_sync |
Macros
wrap_with_async_retry |
|
wrap_with_sync_retry |
|