code: public void register(final long workerId, final List<String> storageTierAliases,
        final Map<String, Long> totalBytesOnTiers, final Map<String, Long> usedBytesOnTiers,
        final Map<String, List<Long>> currentBlocksOnTiers,
        final Map<String, List<String>> lostStorage,
        final List<ConfigProperty> configList) throws IOException {
  
      final RegisterWorkerPOptions options =
          RegisterWorkerPOptions.newBuilder().addAllConfigs(configList).build();
  
      final Map<String, TierList> currentBlockOnTiersMap = currentBlocksOnTiers.entrySet()
          .stream().collect(Collectors.toMap(Map.Entry::getKey,
              e -> TierList.newBuilder().addAllTiers(e.getValue()).build()));
  
      final Map<String, StorageList> lostStorageMap = lostStorage.entrySet().stream()
          .collect(Collectors.toMap(Map.Entry::getKey,
              e -> StorageList.newBuilder().addAllStorage(e.getValue()).build()));
  
      final RegisterWorkerPRequest request = RegisterWorkerPRequest.newBuilder().setWorkerId(workerId)
          .addAllStorageTiers(storageTierAliases).putAllTotalBytesOnTiers(totalBytesOnTiers)
          .putAllUsedBytesOnTiers(usedBytesOnTiers).putAllCurrentBlocksOnTiers(currentBlockOnTiersMap)
          .putAllLostStorage(lostStorageMap)
          .setOptions(options).build();
  
      retryRPC(() -> {
        mClient.registerWorker(request);
        return null;
      });
    }
docs: TODO(yupeng): rename to workerBlockReport or workerInitialize?