code: private boolean cacheBlockFromRemoteWorker(long blockId, long blockSize,
        InetSocketAddress sourceAddress, Protocol.OpenUfsBlockOptions openUfsBlockOptions) {
      try {
        mBlockWorker.createBlockRemote(Sessions.ASYNC_CACHE_SESSION_ID, blockId,
            mStorageTierAssoc.getAlias(0), blockSize);
      } catch (BlockAlreadyExistsException e) {
        // It is already cached
        return true;
      } catch (AlluxioException | IOException e) {
        LOG.warn(
            "Failed to async cache block {} from remote worker ({}) on creating the temp block: {}",
            blockId, sourceAddress, e.getMessage());
        return false;
      }
      try (BlockReader reader =
          new RemoteBlockReader(mFsContext, blockId, blockSize, sourceAddress, openUfsBlockOptions);
          BlockWriter writer =
              mBlockWorker.getTempBlockWriterRemote(Sessions.ASYNC_CACHE_SESSION_ID, blockId)) {
        BufferUtils.fastCopy(reader.getChannel(), writer.getChannel());
        mBlockWorker.commitBlock(Sessions.ASYNC_CACHE_SESSION_ID, blockId);
        return true;
      } catch (AlluxioException | IOException e) {
        LOG.warn("Failed to async cache block {} from remote worker ({}) on copying the block: {}",
            blockId, sourceAddress, e.getMessage());
        try {
          mBlockWorker.abortBlock(Sessions.ASYNC_CACHE_SESSION_ID, blockId);
        } catch (AlluxioException | IOException ee) {
          LOG.warn("Failed to abort block {}: {}", blockId, ee.getMessage());
        }
        return false;
      }
    }
docs: Caches the block at best effort from a remote worker (possibly from UFS indirectly).
  
  @param blockId block ID
  @param blockSize block size
  @param sourceAddress the source to read the block previously by client
  @param openUfsBlockOptions options to open the UFS file
  @return if the block is cached