1. Confluent Documentation, Broker Configurations: The documentation for zookeeper.session.timeout.ms explains its function: "Zookeeper session timeout. If the broker fails to heartbeat to Zookeeper for this period of time it is considered dead." A long GC pause directly causes this failure to heartbeat.
Source: Confluent Documentation, "Broker Configurations", section on zookeeper.session.timeout.ms.
2. Shapira, G., Narkhede, N., & Palino, T. (2021). Kafka: The Definitive Guide (2nd ed.). O'Reilly Media, Inc.
Reference: In Chapter 8, "Reliability," the section "Cluster Membership" details how brokers use ZooKeeper sessions to maintain their status in the cluster. It explicitly mentions that "long garbage-collection pauses" are a common reason for a broker's session to time out, causing ZooKeeper to declare it dead.
3. Confluent Developer, "Apache Kafka and Garbage Collection":
Reference: This official resource explains the impact of GC on Kafka brokers: "A long GC pause can cause a broker to miss its heartbeat to ZooKeeper, which will cause ZooKeeper to declare the broker as dead. This will in turn cause all the leaders on the dead broker to be moved to other replicas." This directly confirms that a long GC pause leads to the broker being considered dead by ZooKeeper.