code: private GSObject getObjectWithRetry(RetryPolicy retryPolicy) throws ServiceException {
      ServiceException lastException = null;
      while (retryPolicy.attempt()) {
        try {
          if (mPos > 0) {
            return mClient.getObject(mBucketName, mKey, null, null, null, null, mPos, null);
          } else {
            return mClient.getObject(mBucketName, mKey);
          }
        } catch (ServiceException e) {
          LOG.warn("Attempt {} to open key {} in bucket {} failed with exception : {}",
              retryPolicy.getAttemptCount(), mKey, mBucketName, e.toString());
          if (e.getResponseCode() != HttpStatus.SC_NOT_FOUND) {
            throw e;
          }
          // Key does not exist
          lastException = e;
        }
      }
      // Failed after retrying key does not exist
      throw lastException;
    }
docs: Retries getting a {@link GSObject}.
  
  @param retryPolicy the retry policy to solve eventual consistency issue
  @return the {@link GSObject}