@Override
  public Pair<Long, Long> getValidSize(TimeRange timeRange) throws StoreException {
    long start = SystemTime.getInstance().milliseconds();
    Pair<Long, NavigableMap<LogSegmentName, Long>> logSegmentValidSizeResult = getValidDataSizeByLogSegment(timeRange);
    logger.debug("Time to getValidDataSizeByLogSegment on store {} : {} ms", storeId,
        SystemTime.getInstance().milliseconds() - start);
    Long totalValidSize = 0L;
    for (Long value : logSegmentValidSizeResult.getSecond().values()) {
      totalValidSize += value;
    }
    return new Pair<>(logSegmentValidSizeResult.getFirst(), totalValidSize);
  }
Exposes stats related to a {@link BlobStore} that is useful to different components.

The {@link IndexScanner} implementation periodically scans the index and create buckets to help serve requests within
a forecast boundary. Stats related requests are either served via these buckets or a separate scan that will walk
through the entire index if the request is outside of the forecast boundary.
ambry-store/src/main/java/com/github/ambry/store/BlobStoreStats.java