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)

Reply via email to