Pair<Long, NavigableMap<LogSegmentName, Long>> getValidDataSizeByLogSegment(TimeRange timeRange)
      throws StoreException {
    return getValidDataSizeByLogSegment(timeRange, time.milliseconds(), null);
  }
Gets the size of valid data at a particular point in time for all log segments. The caller specifies a delete reference
time and acceptable resolution for the stats in the form of a {@link TimeRange}. The store will return data
for a point in time within the specified range.
The following data are considered as valid data for this API:
1. PUT with no expiry and no corresponding DELETE
2. PUT expiring at t_exp but t_ref < t_exp
3. PUT with corresponding DELETE at time t_delete but t_ref < t_delete
4. DELETE record
5. TTL update record whose PUT record is still valid or is in a different log segment to the TTL update record
For this API, t_ref is specified by the given {@link TimeRange}.
@param timeRange the reference {@link TimeRange} at which the data is requested. Defines both the reference time
                 and the acceptable resolution.
@return a {@link Pair} whose first element is the time at which stats was collected (in ms) and whose second
element is the valid data size for each segment in the form of a {@link NavigableMap} of segment names to
valid data sizes.
@throws StoreException if BlobStoreStats is not enabled or closed
ambry-store/src/main/java/com/github/ambry/store/BlobStoreStats.java