\begin{frame}[t] \frametitle{Interrupted Transactions} \vspace{-1ex} \begin{exampleblock}{Money Transfer from Checking to Saving} \hint{Subtract money from source (checking) account:} \nr{1}$\var{checking\_balance} \set \fun{read}(\var{checking\_account})$\\ \nr{2}$\var{checking\_balance} \set \var{checking\_balance}-500$\\ \nr{3}$\fun{write}(\var{checking\_account}, \var{checking\_balance})$\\ \smallskip \hint{Add money to the target (saving) account:} \nr{4}$\var{saving\_balance} \set \fun{read}(\var{saving\_account})$\\ \nr{5}$\var{saving\_balance} \set \var{saving\_balance}+500$\\ \only<2->{\alert{System crash!\\}} \nr{6}$\fun{write}(\var{saving\_account}, \var{saving\_balance})$\\ \end{exampleblock} \pause\smallskip Before the transaction gets to step $6$, the system crashes.\\ (power outage, disk failure or software bug) \pause \begin{alertblock}{} My money is lost! \end{alertblock} \pause \begin{goal}{} Transactions should be \emph{atomic} (executed fully or not at all). \end{goal} \vspace{10cm} \end{frame}