default CompletableFuture<Void> updateBlobTtl(String blobId, String serviceId, long expiresAtMs) {
    CompletableFuture<Void> future = new CompletableFuture<>();
    updateBlobTtl(null, blobId, serviceId, expiresAtMs, CallbackUtils.fromCompletableFuture(future), null);
    return future;
  }
Requests that a blob's TTL be updated asynchronously and returns a future that will eventually contain information
about whether the request succeeded or not.
@param blobId The ID of the blob that needs its TTL updated.
@param serviceId The service ID of the service updating the blob. This can be null if unknown.
@param expiresAtMs The new expiry time (in ms) of the blob. Using {@link Utils#Infinite_Time} makes the blob
                   permanent
@return A future that would contain information about whether the update succeeded or not, eventually.
ambry-api/src/main/java/com/github/ambry/router/Router.java