Skip to content

Transaction Log: Bind commit to RocksDB flush #219

@cb1kenobi

Description

@cb1kenobi

The current Transaction Log design writes and flushes entries to disk prior to calling RocksDB's transaction commit function. Instead, we may want to commit the transaction log during the RocksDB Transaction OnFlushBegin callback. This may allow us to avoid committing the transaction log entries until we know the transaction is conflict-free and committable.

Additionally, we may want to add a OnFlushCompleted listener so that the transaction log system can write a marker to a file in the database directory indicating the SST has been successfully flushed to disk and prior transactions do not need to be replayed. It is possible that RocksDB already writes this information in one of the manifest files (CURRENT -> MANIFEST?).

RocksDB EventListener docs: https://github.com/facebook/rocksdb/wiki/EventListener

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions