private void handleBlockClientLogs(List<BlockClientLog<T>> logs, int expectedSize) {
        int size = logs.size();
        if (expectedSize != size) {
            throw new IllegalArgumentException(
                    "Failed to handle block logs. "
                            + "The size of delta logs must be: "
                            + expectedSize
                            + ", but got: "
                            + size);
        }
        long now = System.currentTimeMillis();
        for (BlockClientLog<T> log : logs) {
            T clientId = log.clientId;
            if (log.isBlockAction) {
                addBlockedClient(new BlockedClient<>(log.clientId, log.blockEndTimeMillis), now);
            } else {
                removeLocalBlockedClient(clientId);
            }
        }
    }
Used to remove the local expired blocked clients quickly, even if there are a lot of blocked
clients so that we can run eviction more frequently.

@implNote It is acceptable to store the same IP or the user ID with different block times in
          the skip list because it is how the skip list works.
turms-server-common/src/main/java/im/turms/server/common/domain/blocklist/manager/BlocklistServiceManager.java