code: CompletableFuture<Long> getBucketOffsetDirect(DirectSegmentAccess segment, UUID keyHash, TimeoutTimer timer) {
          // Get the bucket offset from the segment, which will update the cache if actually newer.
          return this.recoveryTracker.waitIfNeeded(segment,
                  () -> getBucketOffsetFromSegment(segment, Collections.synchronizedMap(new HashMap<>()), Collections.singleton(keyHash), timer)
                          .thenApply(result -> result.get(keyHash)));
      }
docs: Finds the Bucket Offset for the given Key Hash directly from the index (excluding the cache). If the index contains
  an updated offset for this Bucket (i.e., as a result of a compaction), the cache will be automatically updated in
  the process. If the index contains an obsolete offset for this Bucket (compared to the cache), the cache value
  will be returned.
  
  @param segment Segment to look up the Bucket Offset for.
  @param keyHash The Key Hash to look up.
  @param timer   Timer for the operation.
  @return A CompletableFuture that, when completed, will contain the sought offset. If the  bucket does not exist,
  it will contain {@link TableKey#NOT_EXISTS}.