Class RetryBackoffContext.Exponential

java.lang.Object
io.deephaven.util.RetryBackoffContext.Exponential
All Implemented Interfaces:
RetryBackoffContext
Enclosing interface:
RetryBackoffContext

public static class RetryBackoffContext.Exponential extends Object implements RetryBackoffContext
Helper class to Borrowing the retry backoff algorithm from gRPC reconnection
  • Constructor Details

  • Method Details

    • start

      public void start(long timeOfDeadlineMillis)
      Description copied from interface: RetryBackoffContext
      Start tracking time to execute a backoff retry strategy using this context object. A deadline is defined when this method is called.
      Specified by:
      start in interface RetryBackoffContext
      Parameters:
      timeOfDeadlineMillis - absolute time as milliseconds from the epoch to the deadline.
    • retryCount

      public int retryCount()
      Description copied from interface: RetryBackoffContext
      Number of retries performed. Useful for clients that want to log a retry summary after deadline exceeded.
      Specified by:
      retryCount in interface RetryBackoffContext
      Returns:
      number of retries performed.
    • startMillis

      public long startMillis()
      Description copied from interface: RetryBackoffContext
      Absolute point in time when the last call to RetryBackoffContext.startMillis() was invoked.
      Specified by:
      startMillis in interface RetryBackoffContext
      Returns:
      a milliseconds from the epoch timestamp.
    • deadlineExceeded

      public boolean deadlineExceeded()
      Description copied from interface: RetryBackoffContext
      Check if we have exceeded our time deadline to retry.
      Specified by:
      deadlineExceeded in interface RetryBackoffContext
      Returns:
      true if the retry deadline has been exceeded, false otherwise.
    • noBackoff

      public void noBackoff()
      Description copied from interface: RetryBackoffContext
      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.

      Specified by:
      noBackoff in interface RetryBackoffContext
    • backoffMillis

      public long backoffMillis()
      Description copied from interface: RetryBackoffContext
      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, calling Thread.sleep(long).
      Specified by:
      backoffMillis in interface RetryBackoffContext
      Returns:
      time in milliseconds to wait until the next retry.
    • elapsedMillis

      public long elapsedMillis()
      Description copied from interface: RetryBackoffContext
      Return the elapsed between the last time to RetryBackoffContext.deadlineExceeded() and the last call to RetryBackoffContext.start(long).
      Specified by:
      elapsedMillis in interface RetryBackoffContext
      Returns:
      elapsed time in milliseconds.
    • timeOfDeadlineMillis

      public long timeOfDeadlineMillis()
      Description copied from interface: RetryBackoffContext
      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.
      Specified by:
      timeOfDeadlineMillis in interface RetryBackoffContext
      Returns:
      epoch time of deadline in milliseconds.