public long timeUntilCheckQuorumExpires(long currentTimeMs) {
        // if there's only 1 voter, it should never get expired.
        if (voterStates.size() == 1) {
            return Long.MAX_VALUE;
        }
        checkQuorumTimer.update(currentTimeMs);
        long remainingMs = checkQuorumTimer.remainingMs();
        if (remainingMs == 0) {
            log.info(
                "Did not receive fetch request from the majority of the voters within {}ms. " +
                "Current fetched voters are {}, and voters are {}",
                checkQuorumTimeoutMs,
                fetchedVoters,
                voterStates.values().stream().map(voter -> voter.replicaKey)
            );
        }
        return remainingMs;
    }
Get the remaining time in milliseconds until the checkQuorumTimer expires.

This will happen if we didn't receive a valid fetch/fetchSnapshot request from the majority
of the voters within checkQuorumTimeoutMs.

@param currentTimeMs the current timestamp in millisecond
@return the remainingMs before the checkQuorumTimer expired
raft/src/main/java/org/apache/kafka/raft/LeaderState.java