@Override
  protected void chore() {
    if (LOG.isTraceEnabled()) {
      LOG.trace("Snapshot Cleaner Chore is starting up...");
    }
    try {
      List<SnapshotProtos.SnapshotDescription> completedSnapshotsList =
        this.snapshotManager.getCompletedSnapshots();
      for (SnapshotProtos.SnapshotDescription snapshotDescription : completedSnapshotsList) {
        long snapshotCreatedTime = snapshotDescription.getCreationTime();
        long snapshotTtl = snapshotDescription.getTtl();
        long currentTime = EnvironmentEdgeManager.currentTime();
        if (
          SnapshotDescriptionUtils.isExpiredSnapshot(snapshotTtl, snapshotCreatedTime, currentTime)
        ) {
          LOG.info("Event: {} Name: {}, CreatedTime: {}, TTL: {}, currentTime: {}",
            DELETE_SNAPSHOT_EVENT, snapshotDescription.getName(), snapshotCreatedTime, snapshotTtl,
            currentTime);
          deleteExpiredSnapshot(snapshotDescription);
        }
      }
    } catch (IOException e) {
      LOG.error("Error while cleaning up Snapshots...", e);
    }
    if (LOG.isTraceEnabled()) {
      LOG.trace("Snapshot Cleaner Chore is closing...");
    }
  }
Construct Snapshot Cleaner Chore with parameterized constructor
@param stopper         When {@link Stoppable#isStopped()} is true, this chore will cancel and
                       cleanup
@param configuration   The configuration to set
@param snapshotManager SnapshotManager instance to manage lifecycle of snapshot
hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/SnapshotCleanerChore.java