Ich untersuche, wie das Zwei-Phasen-Commit für eine verteilte Transaktion funktioniert. Nach meinem Verständnis fragt der Transaktionskoordinator im letzten Teil der Phase jeden Knoten, ob er zum Festschreiben bereit ist. Wenn alle einverstanden sind, werden sie aufgefordert, sich zu verpflichten.
Was verhindert den folgenden Fehler?
- Alle Knoten antworten, dass sie zum Festschreiben bereit sind
- Der Transaktionskoordinator fordert sie auf, "fortzufahren und festzuschreiben", aber einer der Knoten stürzt ab, bevor diese Nachricht empfangen wird
- Alle anderen Knoten werden erfolgreich festgeschrieben, aber jetzt ist die verteilte Transaktion beschädigt
- Nach meinem Verständnis wurde die Transaktion des abgestürzten Knotens zurückgesetzt, wenn er zurückkommt (da er nie die Festschreibungsnachricht erhalten hat).
Ich gehe davon aus, dass auf jedem Knoten eine normale Datenbank ausgeführt wird, die nichts über verteilte Transaktionen weiß. Was habe ich verpasst?