Package io.deephaven.util
Interface RetryBackoffContext
- All Known Implementing Classes:
RetryBackoffContext.Exponential
public interface RetryBackoffContext
Interface to keep the context required to execute a backoff strategy for retries.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic class
Helper class to Borrowing the retry backoff algorithm from gRPC reconnection -
Method Summary
Modifier and TypeMethodDescriptionlong
Return the time in milliseconds to wait to the next retry.boolean
Check if we have exceeded our time deadline to retry.long
Return the elapsed between the last time todeadlineExceeded()
and the last call tostart(long)
.void
Inform this context object that a retry without applying backoff will be performed.int
Number of retries performed.void
start
(long timeOfDeadlineMillis) Start tracking time to execute a backoff retry strategy using this context object.long
Absolute point in time when the last call tostartMillis()
was invoked.long
Returns the absolute epoch time in milliseconds for the deadline.
-
Method Details
-
start
void start(long timeOfDeadlineMillis) Start tracking time to execute a backoff retry strategy using this context object. A deadline is defined when this method is called.- Parameters:
timeOfDeadlineMillis
- absolute time as milliseconds from the epoch to the deadline.
-
retryCount
int retryCount()Number of retries performed. Useful for clients that want to log a retry summary after deadline exceeded.- Returns:
- number of retries performed.
-
startMillis
long startMillis()Absolute point in time when the last call tostartMillis()
was invoked.- Returns:
- a milliseconds from the epoch timestamp.
-
deadlineExceeded
boolean deadlineExceeded()Check if we have exceeded our time deadline to retry.- Returns:
- true if the retry deadline has been exceeded, false otherwise.
-
noBackoff
void noBackoff()Inform this context object that a retry without applying backoff will be performed.If the caller has some criteria to decide to perform retries in some cases without applying a backoff (eg, if a failure due to authentication requires to renew credentials, which makes sense to be done right away since we understand the reason for the failure), the calling this function lets this object keep the right context for the number of retries performed.
-
backoffMillis
long backoffMillis()Return the time in milliseconds to wait to the next retry. It is assumed the caller will perform a retry after performing this way in some way, eg, callingThread.sleep(long)
.- Returns:
- time in milliseconds to wait until the next retry.
-
elapsedMillis
long elapsedMillis()Return the elapsed between the last time todeadlineExceeded()
and the last call tostart(long)
.- Returns:
- elapsed time in milliseconds.
-
timeOfDeadlineMillis
long timeOfDeadlineMillis()Returns the absolute epoch time in milliseconds for the deadline. Note this method only returns a valid deadline if start has already been called on this Context.- Returns:
- epoch time of deadline in milliseconds.
-