- Disable log recycling by default.
LogBatch::put
returns aResult<()>
instead of()
. It errs when the key is reserved for internal use.- Possible to specify a permission in
FileSystem::open
.
- Fix data loss caused by aborted rewrite operation. Downgrading to an earlier version without the fix may produce phantom Raft Groups or keys, i.e. never written but appear in queries.
- Support preparing prefilled logs to enable log recycling when start-up.
- Add a new configuration
spill-dir
to allow automatic placement of logs into an auxiliary directory whendir
is full. - Add a new method
Engine::fork
to duplicate anEngine
to a new place, with a few disk file copies.
- Unconditionally tolerate
fallocate
failures as a fix to its portability issue. Errors other thanEOPNOTSUPP
will still emit a warning. - Avoid leaving fractured write after failure by reseeking the file writer. Panic if the reseek fails as well.
- Fix a parallel recovery panic bug.
- Fix panic when an empty batch is written to engine and then reused.
- Add
PerfContext
which records detailed time breakdown of the write process to thread-local storage. - Support recycling obsolete log files to reduce the cost of
fallocate
-ing new ones.
- Add
is_empty
toEngine
API. - Add metadata deletion capability to
FileSystem
trait. Users can implementexists_metadata
anddelete_metadata
to clean up obsolete metadata from older versions of Raft Engine. - Add
Engine::scan_messages
andEngine::scan_raw_messages
for iterating over written key-values. - Add
Engine::get
for getting raw value. - Move
sync
fromenv::WriteExt
toenv::Handle
. - Deprecate
bytes_per_sync
.
- Change format version to 2 from 1 by default.
- Enable log recycling by default.
- Fix a false negative case of
LogBatch::is_empty()
#212 - Fix fsync ordering when rotating log file #219
- Support limiting the memory usage of Raft Engine under new feature
swap
#211 - Add a new Prometheus counter
raft_engine_memory_usage
to track memory usage #207
- Reduce memory usage by 25% #206
- Introduce a new error type
Full
#206 LogBatch::merge
returns aResult<()>
instead of()
#206