-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Layered Tables
-
None
-
Storage Engines - Foundations
-
None
-
None
Issue Summary
When verifying ingest tables on a leader, it is expected that the ingest table is empty and should not be dirty, allowing verification at all times. However, an unexpected EBUSY error was encountered in WT-16703 because the __statlog_server accesses the ingest table in parallel, contradicting this assumption.
Context
- The stat log server iterates over all open dhandles and accesses each of them, including ingest tables.
- Closing the ingest table dhandle may trigger the ingest dhandle sweep, potentially negating the advantages of creating ingest tables on the leader.
- Currently, ingest tables are closed only when the entire layered table is closed.
- There is a suggestion to introduce an intermediate state for ingest tables, indicating they are unused but not closed.
- Other components, such as the sweep server, may also access ingest tables and cause verify to return EBUSY.
Proposed Solution
- As a short-term resolution, avoid performing checks on ingest tables on the leader and leave a FIXME to investigate preventing all service threads on the leader from accessing ingest tables.
- In the stat log server, consider skipping ingest tables on the leader with logic such as:
if leader and uri is ingest => skip file - Investigate whether skipping ingest tables could be beneficial in other scenarios as well.
- Confirm the understanding of the ingest table dhandle lifecycle and explore options for intermediate states.
- is related to
-
WT-16703 Ingest table on leader cannot be verified
-
- In Code Review
-