Skip to content
  • Maysam Yabandeh's avatar
    Mark logs with prepare in PreReleaseCallback (#5121) · 5234fc1b
    Maysam Yabandeh authored
    In prepare phase of 2PC, the db promises to remember the prepared data, for possible future commits. To fulfill the promise the prepared data must be persisted in the WAL so that they could be recovered after a crash. The log that contains a prepare batch that is not committed yet, is marked so that it is not garbage collected before the transaction commits/rollbacks. The bug was that the write to the log file and the mark of the file was not atomic, and WAL gc could have happened before the WAL log is actually marked. This patch moves the marking logic to PreReleaseCallback so that the WAL gc logic that joins both write threads would see the WAL write and WAL mark atomically.
    Pull Request resolved:
    Differential Revision: D14665210
    Pulled By: maysamyabandeh
    fbshipit-source-id: 1d66aeb1c66a296cb4899a5a20c4d40c59e4b534