This is part of my main post on architecture of ZAB.
There are four variables that constitute the persistent state of a node, which are used during the recovery part of the protocol:
– history: a log of transaction proposals accepted;
− acceptedEpoch: the epoch number of the last NEWEPOCH message accepted;
− currentEpoch: the epoch number of the last NEWLEADER message accepted;
− lastZxid: zxid of the last proposal in the history;
References: Andr´e Medeiros, “ZooKeeper’s atomic broadcast protocol: Theory and practice”, http://www.tcs.hut.fi/Studies/T-79.5001/reports/2012-deSouzaMedeiros.pdf