Sounds like a transaction serialisation problem?
My design has something similar, but I think more like MOESI protocol
analogous to CPUs. There are read leases which are revoked by
explicit confirmation or waiting for them to expire, but that's only
required when serialisation forces a particular access order, and it
can be speculated around. Like MOESI, it adapts between mostly-read
and mostly-write workloads.
-- Jamie
--