private void checkerDaemon(List<Predicate<RaftLogSummary>> checkerList) {
    if (isStopped.get()) {
      return;
    }
    try {
      for (RaftGroupId groupId : serverRef.get().getServer().getGroupIds()) {
        final Optional<RaftLogSummary> summary = getLatestSummary(groupId);
        if (summary.isPresent()) {
          final Optional<Boolean> anyCheckerPositive =
              checkerList.stream()
                  .map(checker -> checker.test(summary.get()))
                  .filter(Boolean::booleanValue)
                  .findAny();
          if (anyCheckerPositive.isPresent()) {
            getSnapshotFlag(groupId).set(true);
          }
        }
      }
    } catch (IOException ignore) {
    }
  }
Periodically woken up. Will check the snapshot condition and set the snapshot flag.
iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/DiskGuardian.java