Abhishek Rai created ZOOKEEPER-2574: ---------------------------------------
Summary: PurgeTxnLog can inadvertently delete required txn log files Key: ZOOKEEPER-2574 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2574 Project: ZooKeeper Issue Type: Bug Components: server Affects Versions: 3.5.2, 3.5.1, 3.5.0, 3.4.8, 3.4.7 Environment: Zookeeper 3.4.8, standalone, and 3-server quorum Reporter: Abhishek Rai Priority: Critical As part of the fix for ZOOKEEPER-1797, the call to FileTxnSnapLog.getSnapshotLogs() was removed from PurgeTxnLog.java. As a result, some old-looking but required txn log files can be deleted, resulting in data corruption or loss. For example, consider the following: 1. Configuration: autopurge.snapRetainCount=3 2. Following files exist: log.100 spans transactions from zxid=100 till zxid=140 (inclusive) snapshot.110 - snapshot as of zxid=110 snapshot.120 - snapshot as of zxid=120 snapshot.130 - snapshot as of zxid=130 3. PurgeTxnLog retains all snapshots but deletes log.100 because its zxid is older than the zxid of the oldest snapshot (110). This results in loss of transactions in the range 131-140. Before the fix for ZOOKEEPER-1797, this was avoided by the call to FileTxnSnapLog.getSnapshotLogs() which finds the newest txn log file with starting zxid < snapshot zxid. -- This message was sent by Atlassian JIRA (v6.3.4#6332)