Ask questionsEngine abstraction tracking issue
This issue is to organize and track progress on abstracting TiKV over generic storage engines (previous issue: https://github.com/tikv/tikv/issues/4184). There are many tasks to be done and contributions are welcome.
In scope: the process of abstracting the entire RocksDB engine API into the
engine_rocks crates, decoupling TiKV and its test suite from RocksDB., and prototyping new engine bindings. Out of scope: refactoring
engine_traits to better support with non-RocksDB engines.
engine_traits crate docs describe the design and
The issue is updated to contain a checklist of tasks that definitely need to happen, along with name of who is working on it. When you decide to take a task, say so on the issue before attempting it so that someone else doesn't duplicate your work.
It's hard to know in what order these need to happen, nor exactly how to
complete each of them, as each tends to present new challenges. Instead I have
documented here, in the
engine_traits crate docs, and in a status report, my experiences so far and suggestions for how to proceed.
The most important thing to keep in mind is:
Make small changes: small commits, small PRs. When you find that something else needs to change first, stop what you are doing, and make that change, and submit that PR. Don't let your patches grow out of control. Don't be afraid to throw away your work and try something else.
engine_traits_teststest suite that is parameterized over implementations
Answer questions brson
Now that raftstore is its own crate (thanks @overvenus), we have a nice intermediate goal: remove the
engine dependency from
raftstore. That simplifies the problem quite a bit.
Related questionsNo questions were found.