-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Checkpoints
-
None
-
Storage Engines, Storage Engines - Persistence
-
0.008
-
StorEng - Defined Pipeline
-
None
`__wt_checkpoint_file` establishes the checkpoint time before parsing the configuration:
standalone = session->ckpt.current_sec == 0; if (standalone) __checkpoint_establish_time(session); WT_RET(__wt_config_gets_def(session, cfg, "force", 0, &cval));
If the parse fails, `WT_RET` returns before the `done:` label, so `__checkpoint_clear_time` is not called and `session->ckpt.current_sec` is left set.
A later file checkpoint on the same session then sees `standalone == false`, skips establishing a new time, and reuses the stale value (stored as the checkpoint's `sec`). A later `__checkpoint_establish_time` can also trip its `current_sec == 0` assertion.
Fix: parse the configuration before establishing the time, or route the parse error through `done:`.
Found while reviewing PR #14877 (WT-18064), which fixes this as a side effect by moving the parse earlier.
- is related to
-
WT-18064 Dhandle scaling Perf: For checkpoint prepare, hoist any checkpoint config parsing out of the dhandle gather loop
-
- In Code Review
-