public boolean handleStorageException(final StorageException exs) throws StorageException {
    // None of the retryable exceptions are reopenable, so it's OK to write the code this way.
    if (isRetryable(exs)) {
      handleRetryForStorageException(exs);
      return false;
    }
    if (isReopenable(exs)) {
      handleReopenForStorageException(exs);
      return true;
    }
    throw exs;
  }
public boolean handleStorageException ( final StorageException exs ) throws StorageException { if ( isRetryable ( exs ) ) { handleRetryForStorageException ( exs ) ; return false ; } if ( isReopenable ( exs ) ) { handleReopenForStorageException ( exs ) ; return true ; } throw exs ; }
Checks whether we should retry, reopen, or give up.

<p>In the latter case it throws an exception (this includes the scenario where we exhausted the
retry count).

<p>Otherwise, it sleeps for a bit and returns whether we should reopen. The sleep time is
dependent on the retry number.

@param exs caught StorageException
@return True if you need to reopen and then try again. False if you can just try again.
@throws StorageException if the exception is not retryable, or if you ran out of retries.