public void cleanExpiredMobFiles(TableDescriptor htd, ColumnFamilyDescriptor family)
    throws IOException {
    Configuration conf = getConf();
    String tableName = htd.getTableName().getNameAsString();
    FileSystem fs = FileSystem.get(conf);
    LOG.info("Cleaning the expired MOB files of " + family.getNameAsString() + " in " + tableName);
    // disable the block cache.
    Configuration copyOfConf = new Configuration(conf);
    copyOfConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0f);
    CacheConfig cacheConfig = new CacheConfig(copyOfConf);
    MobUtils.cleanExpiredMobFiles(fs, conf, htd, family, cacheConfig,
      EnvironmentEdgeManager.currentTime());
  }
Cleans the MOB files when they're expired and their min versions are 0. If the latest timestamp
of Cells in a MOB file is older than the TTL in the column family, it's regarded as expired.
This cleaner deletes them. At a time T0, the cells in a mob file M0 are expired. If a user
starts a scan before T0, those mob cells are visible, this scan still runs after T0. At that
time T1, this mob file M0 is expired, meanwhile a cleaner starts, the M0 is archived and can be
read in the archive directory.
@param tableName The current table name.
@param family    The current family.
hbase-server/src/main/java/org/apache/hadoop/hbase/mob/ExpiredMobFileCleaner.java