The version 3.5.1 of ZK does not detect whether the snapshot file exists or not. However, the snapshot file detection is added in the subsequent version. When I tested the upgrade from 3.5.1 to 3.5.6, I found that after the completion of ZK election, One of the ZK node has an error in the following phase due to some network reasons, and then it will receive a diff reply. At this time, both snapshotNeeded and isPreZAB1_0 （ Learner#syncWithLeader(long newLeaderZxid) ）are assigned to false. So, none of snapshot file will be generated but a log file, which will cause the startup failure after the upgrade.