Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Previously we had to do do a linear search through the list of segment reference to find which file to read a given entry from. This commit introduced a new module `ra_lol` which is a "list of list" type of ordered data structure that replaces the use of a plain list. ra_log keeps data in a list of 64 entry sized "rows" which subtantially reduces the amount of work needed to find a given segment ref as we first scan each row to find the row with the segref in then we can the fixed size row. Even a server with 4096 segment only need to scan at most 128 to find any given entry. This commit also fixes a few issues in segref compaction and changes the type of the segment ref to a {ra_range:range(), filename()} to work better with the ra_range module.
- Loading branch information