mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-02 13:06:57 +00:00
" Currently commitlog supports two modes of operation. First is 'periodic' mode where all commitlog writes are ready the moment they are stored in a memory buffer and the memory buffer is flushed to a storage periodically. Second is a 'batch' mode where each write is flushed as soon as possible (after previous flush completed) and writes are only ready after they are flushed. The first option is not very durable, the second is not very efficient. This series adds an option to mark some writes as "more durable" in periodic mode meaning that they will be flushed immediately and reported complete only after the flush is complete (flushing a durable write also flushes all writes that came before it). It also changes paxos to use those durable writes to store paxos state. Note that strictly speaking the last patch is not needed since after writing to an actual table the code updates paxos table and the later uses durable writes that make sure all previous writes are flushed. Given that both writes supposed to run on the same shard this should be enough. But it feels right to make base table writes durable as well. " * 'gleb/commilog_sync_v4' of github.com:scylladb/seastar-dev: paxos: immediately sync commitlog entries for writes made by paxos learn stage paxos: mark paxos table schema as "always sync" schema: allow schema to be marked as 'always sync to commitlog' commitlog: add test for per entry sync mode database: pass sync flag from db::apply function to the commitlog commitlog: add sync method to entry_writer