private static void updateStats(DirIndex dirIndex, Stats stats) {
    stats.filesPresent += dirIndex.getFilesPresent().size();
    stats.filesRemoved += dirIndex.getFilesRemoved().size();

    stats.subDirsPresent += dirIndex.getSubDirsPresent().size();
    stats.subDirsRemoved += dirIndex.getSubDirsRemoved().size();

    stats.bytesPresent += dirIndex.getFilesPresent().stream().mapToLong(fi -> fi.getFileMetadata().getSize()).sum();
    stats.bytesRemoved += dirIndex.getFilesRemoved().stream().mapToLong(fi -> fi.getFileMetadata().getSize()).sum();

    for (DirIndex subDirPresent : dirIndex.getSubDirsPresent()) {
      updateStats(subDirPresent, stats);
    }

    for (DirIndex subDirsRemoved : dirIndex.getSubDirsRemoved()) {
      updateStatsForSubDirsRemoved(subDirsRemoved, stats);
    }
  }
Representation of a directory in the blob store
samza-core/src/main/java/org/apache/samza/storage/blobstore/index/DirIndex.java