-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Engines - Foundations
-
949.846
-
None
-
None
Unable to run wt tool to verify the palite-backed database on this patch task: Spruce logs. Patch-linked run appears affected.
Summary
Palite materialization filter uses steady_clock; DBs unreadable after reboot
Description
After a host reboot, opening a palite-backed disagg database can fail even though page-log data is intact. plh_get returns 0 entries for pages that exist in SQLite, and open/verify aborts.
Root cause
GET_PAGES filters with timestamp_materialized_us <= now_us(), and now_us() uses steady_clock (boot-relative). Timestamps from the previous uptime are larger than the post-reboot clock, so every page looks unmaterialized.
Example: stored ~1.49e10 vs now_us() ~1.3e9 → 0 rows, despite the page being present in pages_*.db.
Existing knobs do not help:
- disaggregated.last_materialized_lsn — WT frontier only
- materialization_delay_ms — writes only
- palite last_materialized_lsn — unused on get
Impact
wt verify, wt list, and format -v -R cannot reopen intact palite RUNDIRs after reboot.
Acceptance
Post-reboot open/verify works on an intact palite DB without mutating page-log files.
Workaround
None via config. Manually zeroing timestamp_materialized_us in pages_*.db restores reads but mutates the DB.