• manish's avatar
    Disable WAL for block storage DB · 0df6a8d1
    manish authored
    (Rocks) DB WAL adds overheads while using the DB for saving checkpoints
    for block storage. Avoiding writing to WAL translates the write workload
    (appending blocks to the blockfile) into a sequential disk writes.
    This commit changes the way checkpoints are saved - checkpoints are
    written to DB as before, however since WAL is disabled, the checkpoint
    stays in-memory only. The in-memory checkpoint is flushed explicitly to
    disk (via DB flush) at the time of new block file creation. The in-memory
    checkpoint would implicitly also be flushed to memory at the time of DB
    shutdown. However, if a crash takes place, the checkpoint available in the
    DB would be behind the actual block file status. In order to handle this
    crash scenario, this commit also adds code to perform a scan of the block
    file beyond the last saved checkpoint and update the checkpoint.
    Change-Id: Ie88646b225abaa50b595833f5e7ed8d4facae920
    Signed-off-by: default avatarmanish <manish.sethi@gmail.com>