The ISR is the set of replicas that are 'caught up' with the leader. Caught up means the replica's last fetch was within replica.lag.time.max.ms (default 30s) of the current time. If a follower falls behind (slow network, GC pause, disk I/O), it is removed from the ISR. When it catches up, it is re-added. The ISR is stored in ZooKeeper/KRaft metadata and is the source of truth for leader election candidates.
Key configuration
replica.lag.time.max.ms=30000 — ISR eviction threshold (30s)
replica.fetch.min.bytes=1 — min bytes to return per fetch