120/212
\begin{frame}
  \frametitle{Cascading Rollbacks}

  \begin{exampleblock}{}
  \begin{tcenter}
    \begin{tikzpicture}[inner sep=.5mm,outer sep=.5mm]
      \draw [thick,->] (0,0) -- node [at end,above] {time} (7cm,0);
      \draw [thick,->] (0,0) -- (0,3cm);
      
      \begin{scope}[yshift=2.6cm]
      \node at (0,0cm) [anchor=east] {$T_1$};
      \draw (.5cm,0cm) -- node [pos=1,anchor=west] {\error abort} node (w1) [pos=.1,above] {{\footnotesize $\twrite{X}$}} (6cm,0cm);
      \draw (.5cm,-.1cm) -- (.5cm,.1cm);
      \draw (6cm,-.1cm) -- (6cm,.1cm);
      \end{scope}

      \begin{scope}[yshift=1.9cm]
      \node at (0,0cm) [anchor=east] {$T_2$};
      \draw (1cm,0cm) -- node (r1) [pos=.8,above] {{\footnotesize $\tread{X}$}} (5cm,0cm);
      \draw (1cm,-.1cm) -- (1cm,.1cm);
      \draw (5cm,-.1cm) -- (5cm,.1cm);
      \end{scope}

      \begin{scope}[yshift=1.2cm]
      \node at (0,0cm) [anchor=east] {$T_3$};
      \draw (1.5cm,0cm) -- node (w2) [pos=.1,above] {{\footnotesize $\twrite{Y}$}} node (r2) [pos=.5,above] {{\footnotesize $\tread{X}$}} (5.5cm,0cm);
      \draw (1.5cm,-.1cm) -- (1.5cm,.1cm);
      \draw (5.5cm,-.1cm) -- (5.5cm,.1cm);
      \end{scope}

      \begin{scope}[yshift=0.5cm]
      \node at (0,0cm) [anchor=east] {$T_4$};
      \draw (2.5cm,0cm) -- node (r3) [pos=.3,above] {{\footnotesize $\tread{Y}$}} (4cm,0cm);
      \draw (2.5cm,-.1cm) -- (2.5cm,.1cm);
      \draw (4cm,-.1cm) -- (4cm,.1cm);
      \end{scope}
      
      \begin{scope}[dotted,red,->,very thick]
      \mpause[1]{
        \draw (w1) -- (r1);
        \draw (w1) -- (r2);
      }
      \mpause[3]{
        \draw (w2) -- (r3);
      }
      \end{scope}
    \end{tikzpicture}
  \end{tcenter}
  \end{exampleblock}
  \smallskip
  
  \begin{quiz}{\textwidth}{What happens here?}
    \pause
    Note: $T_2$ and $T_3$ \emph{cannot commit} until the fate of $T_1$ is known.%
    \pause\smallskip
    
    When $T_1$ aborts: 
    \begin{itemize}
      \item $T_2$ and $T_3$ have already read data written by $T_1$ (dirty read)
      \item $T_2$ and $T_3$ need to be rolled back too (\emph{cascading roll back})
    \end{itemize}
    \pause
    
    Since $T_3$ is aborted, $T_4$ needs to be aborted as well.
  \end{quiz}
\end{frame}