@Override
  public boolean isAvailable(Object id, List<AbstractHeartbeatSample> history) {
    final AbstractHeartbeatSample lastSample =
        history.isEmpty() ? null : history.get(history.size() - 1);
    if (lastSample != null) {
      Preconditions.checkArgument(
          lastSample instanceof NodeHeartbeatSample || lastSample instanceof RegionHeartbeatSample);
    }
    final long lastSendTime =
        Optional.ofNullable(lastSample)
            .map(AbstractHeartbeatSample::getSampleLogicalTimestamp)
            .orElse(0L);
    final long currentNanoTime = System.nanoTime();
    return currentNanoTime - lastSendTime <= heartbeatTimeoutNs;
  }
FixedDetector will decide a node unknown iff. Time elapsed from last heartbeat exceeds the
heartbeatTimeoutNs.
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/detector/FixedDetector.java