@Override
  public List<Path> compact(CompactionRequestImpl request,
    ThroughputController throughputController, User user) throws IOException {
    String tableName = store.getTableName().toString();
    String regionName = store.getRegionInfo().getRegionNameAsString();
    String familyName = store.getColumnFamilyName();
    LOG.info(
      "MOB compaction: major={} isAll={} priority={} throughput controller={}"
        + " table={} cf={} region={}",
      request.isMajor(), request.isAllFiles(), request.getPriority(), throughputController,
      tableName, familyName, regionName);
    if (request.getPriority() == HStore.PRIORITY_USER) {
      userRequest.set(Boolean.TRUE);
    } else {
      userRequest.set(Boolean.FALSE);
    }
    LOG.debug("MOB compaction table={} cf={} region={} files: {}", tableName, familyName,
      regionName, request.getFiles());
    // Check if I/O optimized MOB compaction
    if (ioOptimizedMode) {
      if (request.isMajor() && request.getPriority() == HStore.PRIORITY_USER) {
        try {
          final SetMultimap<TableName, String> mobRefs = request.getFiles().stream().map(file -> {
            byte[] value = file.getMetadataValue(HStoreFile.MOB_FILE_REFS);
            ImmutableSetMultimap.Builder<TableName, String> builder;
            if (value == null) {
              builder = ImmutableSetMultimap.builder();
            } else {
              try {
                builder = MobUtils.deserializeMobFileRefs(value);
              } catch (RuntimeException exception) {
                throw new RuntimeException("failure getting mob references for hfile " + file,
                  exception);
              }
            }
            return builder;
          }).reduce((a, b) -> a.putAll(b.build())).orElseGet(ImmutableSetMultimap::builder).build();
          // reset disableIO
          disableIO.set(Boolean.FALSE);
          if (!mobRefs.isEmpty()) {
            calculateMobLengthMap(mobRefs);
          }
          LOG.info(
            "Table={} cf={} region={}. I/O optimized MOB compaction. "
              + "Total referenced MOB files: {}",
            tableName, familyName, regionName, mobRefs.size());
        } catch (RuntimeException exception) {
          throw new IOException("Failed to get list of referenced hfiles for request " + request,
            exception);
        }
      }
    }

    return compact(request, scannerFactory, writerFactory, throughputController, user);
  }
Compact passed set of files in the mob-enabled column family.
hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java