HomeStore
HomeStore copied to clipboard
Add index CR UT for basic merge
https://docs.google.com/presentation/d/1NUvu1ZlDKqJWfBayg2lSWHSB6TEaZ4Y3VbnGc996drM/edit#slide=id.g2f8c68a8252_1_10
Add basic index CR logic & UT.
Major changes including:
- Add freed nodes to the dependency graph for recovery
- Reconstruct our handling strategy in
wb_cache::recover()
for recovered new/freed buffers - Add protection for several corner cases in
index_table::repair_link()
- Add flip point for freed nodes
As well as some bug fixes:
- Fix several down_buffer counter leaks
- Fix a bug in wb_cache async_flush that may cause one buffer get processed multiple times
- Fix some bugs in racing conditions during homestore restart
There are still some known issues in some corner cases, such as incorrect next_node pointer. However, since solving these may introduce complicated modification to the current logic, let's leave them to future PRs and discuss later.