You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cheap solution: randomize initial version.
Precise solution: check tx_id and tx_version in the prepare phase.
Randomizing initial version almost fix the issue except 1/2^32 of collision.
tx_id is a UUIDv4 value newly generated for each transaction, so the collision is neglectable. Checking two values may impact the performance, although it might not be significant.
@Yonezawa-T2 Thanks. That randomize solution sounds a bit tricky and makes verification more difficult.
Checking tx_id additionally might be good enough for this.
I feel introducing logical delete and guaranteeing monotonic version increase would probably be good from many perspectives as well. Physical delete is a bit scary from verification perspective actually. (it depends how well C*/underlining conditional delete is implemented)
feeblefakie
changed the title
Non-serializable execution when a recode is deleted
Non-serializable execution (lost update) when a recode is deleted
Apr 24, 2020
Environment
How to reproduce
Steps
Actual states :
The above state can NOT be produced by T1, T2 and T3 in some serial order, which means the execution is not serializable.
T1->T3->T2 and T3->T1->T2
no record
T2->T1->T3 and T2->T3->T1
The text was updated successfully, but these errors were encountered: