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)