When the local NameNode is healthy, the ZKFC holds a session open in ZooKeeper. If the local NameNode is active, it also holds a special “lock” znode. This lock uses ZooKeeper’s support for “ephemeral” nodes; if the session expires, the lock node will be automatically deleted.
Ephemeral znodes - These znodes exists as long as the session that created the znode is active. When the session ends the znode is deleted. Zookeeper has a concept of Watches which can be set on znodes to track them for any changes.
Check the link how Watches work in zookeeper -
https://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#ch_zkWatches