Explore moving all tablet in memory state an synchronization into a single class
- Dominant language
- Java
- Stars
- 1.2k
- Forks
- 487
- Avg merge
- 4d 5h
- Merged PRs (30d)
- 13
Description
The Tablet code has a mixture of I/O code and in memory state (like active walogs, active in memory maps, current files, minor compactions in progress, refreshes in progress, etc). Its hard to analyze this synchronization code to ensure things like does any I/O happen while holding a lock (which is not desired).
Moving all of the tablets in memory state+sync into a single class that could be unit tested and analyzed may be one way to improve this.
Doing this work in the elasticity branch will be easier as a lot of functionality has been removed from the tablet server.
Contributor guide
Research direction
Start by reviewing the Tablet code on the elasticity branch and cataloging its in-memory state and synchronization responsibilities, including active WALs, in-memory maps, current files, compactions, and refreshes. Use that analysis to define a separately unit-testable class and verify that I/O does not occur while holding a lock.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, databases
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100