Techniques for executing an atomic transaction include performing a first
operation of a first set of operations. The atomic transaction involves the first
set of operations for causing changes to a first set of data. A first error that
prevents completion of the atomic transaction is detected. In response to detecting
the first error, a second set of operations is performed for resolving the first
error. It is then determined whether a resolution of the first error is obtained
in response to performing the second set of operations. If the resolution is obtained,
then execution of the first set of operations is resumed. These techniques allow
atomic transactions to be resumed after resolving an error without undoing all
the operations accomplished for the transaction at the time the error occurred.