In the example above,
transaction T2 was able to see incremental writes of T1.
This approach increases the concurrency in the system but
consider what happens if for some reason transaction T1
aborts.
In this situation,
the atomicity requirement implies that transactions such as T2
that have seen
results of T1, transactions that have seen writes of these transactions,
and so on must also be aborted.
This problem is referred to as the problem of cascaded rollbacks,
and locking schemes sometimes avoid this problem by unlocking data only
at the end of the transaction.