Ich denke, das erwartete Verhalten ist ein wenig daneben. Vor db_slow-Commits werden alle Zeilen in der Tabelle gesperrt. Nach dem Commit gibt es zwei Zeilen. db_fast wird entsperrt, wenn db_slow festschreibt. Daher ist das Verhalten:
- db_slow:Zeile 1 auswählen und sperren
- db_slow:sehen, dass es nur 1 Zeile ist und warten
- db_fast:versuche Zeile 1 auszuwählen, sieh nach, dass sie gesperrt ist, warte
- db_slow:Zeile mit '2' einfügen
- db_slow:festschreiben
- db_fast:entsperrt und liest 2 Zeilen
- db_fast:tut nichts
- Am Ende foo:1, 2