Priority: Major - P3
Affects Version/s: None
Fix Version/s: Backlog
With the current implementation, checkpoint may see partial resolved prepared updates on the same key and write that to disk.
The detailed scenario is like follow:
Suppose we have the update chain like U_prepared2@10 -> U_prepared1@10
We commit the prepared update and resolve the U_preapred2 to U_committed@11_durable@12.
Context switch happens and we have U_committed@11_durable@12 -> U_prepared1@10 on the update chain.
Checkpoint comes to the page and sees U_committed@11_durable@12 and decide to write it to the disk image.
Checkpoint sees U_prepared1@10 and set has_newer_updates to true but never unsets the update that should be written to disk (U_committed@11_durable@12).
In this case, we write U_committed@11_durable@12 to the data store and U_prepared1@10 to the history store, which is wrong.