Zusammenfassung

  • Ein Teilnehmer stimmt erst zu, nachdem er genug dauerhaften Zustand für Redo oder Undo gesichert hat; damit verliert er die Freiheit zur eigenen Entscheidung, kennt das Gesamtergebnis aber noch nicht.
  • Die dauerhafte Entscheidung des Koordinators ist eine getrennte Protokolltatsache. Kann ein vorbereiteter Teilnehmer sie nicht erfahren, schützt Warten die Atomarität besser als ein erfundenes lokales Ergebnis.
  • Commit gilt für beteiligte Transaktionsressourcen. Es beweist nicht, dass eine E-Mail, menschliche Aufgabe oder physische Aktion außerhalb dieses Bereichs genau einmal ausgeführt wurde.

Nach einem Ausfall findet ein Teilnehmer einen erzwungen geschriebenen prepare-Eintrag. Seine lokale Arbeit war erfolgreich, und er erinnert sich an seine Ja-Stimme. Nur der Beschluss fehlt. „Fast committed“ wäre dafür ein gefährlicher Name. Der genaue Zustand lautet prepared und in-doubt.

Jim Grays Texte über Transaktionen machen aus diesem Unterschied ein Denkwerkzeug. Phase eins schafft die Fähigkeit, zwei mögliche Ausgänge zu befolgen, und nimmt dem Teilnehmer die einseitige Wahl. Erst Phase zwei übermittelt die dauerhafte Entscheidung einer anderen Instanz.

Prepare ist ein Versprechen, kein Urteil

In Notes on Data Base Operating Systems von 1978 lässt Gray den Koordinator jeden Teilnehmer in einen Zustand bringen, aus dem dieser seinen Anteil entweder wiederholen oder rückgängig machen kann. Vor AGREE müssen die nötigen UNDO- und REDO-Informationen sicher gespeichert sein.

Vor dem Ja kann der Teilnehmer ablehnen und abbrechen. Danach muss er Protokoll, Sperren oder Versionen bewahren, die sowohl Commit als auch Abort ermöglichen. Lokaler Erfolg wird nicht zur globalen Entscheidung, sondern zur bedingten, dauerhaften Verpflichtung.

C. Mohan, Bruce Lindsay und Ron Obermarck formulieren die Grenze für IBM R* eindeutig: Der untergeordnete Knoten erzwingt den Prepare-Eintrag, sendet YES und tritt in prepared ein. Danach darf er weder allein committen noch abbrechen.

Der Commit-Punkt liegt beim Koordinator

Der Koordinator sammelt die erforderlichen Stimmen. Sind die Bedingungen erfüllt, erzwingt er seinen globalen Commit-Eintrag und verkündet erst danach das Ergebnis. R* nennt diese Schreiboperation den Commit-Punkt. Das Ja eines einzelnen Teilnehmers liegt also vor der Tatsache, die er später ausführen soll.

Ohne diese Trennung könnten mehrere lokale Erfolge zu widersprüchlichen Wahrheiten werden. Deutet ein Teilnehmer sein Ja als Commit, während ein anderer vor der Vorbereitung ausfällt, könnte der erste Änderungen sichtbar machen, die der zweite zurücknehmen muss. Die zwei Phasen unterstellen alle lokalen Fähigkeiten einer einzigen dauerhaften Entscheidung.

Selbst Wissen über alle Ja-Stimmen verleiht nicht automatisch die Entscheidungsgewalt des Koordinators. Information und Autorität sind verschieden. Wiederanlauf heißt, den echten Beschluss wiederzufinden, nicht den wahrscheinlichsten zu errechnen.

Recovery rekonstruiert Wissen

Grays Regel ist bewusst nüchtern. Ohne erzwungenen Zustimmungsnachweis darf der Teilnehmer abbrechen, weil kein dauerhaftes Versprechen nach außen gelangt ist. Mit diesem Nachweis fragt er den Koordinator oder einen autorisierten Recovery-Pfad und führt anschließend REDO oder UNDO aus.

Eine Betriebsansicht muss working, prepared/in-doubt, committed und aborted getrennt zeigen. Wer prepared als „erfolgreich“ zusammenfasst, verbirgt die entscheidende Ungewissheit. Dienst und lokale Daten können intakt sein, während der globale Ausgang offen bleibt.

Nützliche Belege sind Transaktionskennung, Koordinator oder Recovery-Instanz, Zeitpunkt des Prepare, letzter bestätigter Kontakt und noch gehaltene Ressourcen. Eine Wiederholung der Geschäftsaktion löst den alten Zustand nicht; sie kann eine zweite Wirkung erzeugen.

Blockieren heißt, keine Entscheidung zu erfinden

Fällt der Koordinator nach dem Ja und vor Zustellung des Ergebnisses aus, kann klassisches 2PC blockieren. Gray und Leslie Lamport stellen diese Einschränkung in Consensus on Transaction Commit ausdrücklich heraus: Ein einzelner Koordinator genügt im Normalfall, doch sein Ausfall kann den Fortschritt stoppen.

Die Wartezeit bindet Sperren und Kapazität. Dennoch bewahrt sie zwei Tatsachen: Dem Teilnehmer fehlen Wissen und Entscheidungsbefugnis. Commit zu vermuten riskiert gespaltene Ergebnisse; Abort zu vermuten kann einem andernorts bereits dauerhaften Commit widersprechen.

R* behandelt heuristische Betreiberentscheidungen für Notfälle, warnt aber vor Inkonsistenz mit dem tatsächlichen Gesamtbeschluss. Ein erzwungenes Ergebnis ist daher als Ausnahme zu kennzeichnen und zu bereinigen. Es macht 2PC nicht heimlich blockierungsfrei.

Die Transaktion endet an der Teilnahmegrenze

In „The Transaction Concept: Virtues and Limitations“ trennt Gray geschützte von „real actions“. Ein Protokoll kann Daten zurücksetzen. Es holt kein ausgezahltes Bargeld zurück, widerruft keine zugestellte E-Mail, kehrt keine menschliche Entscheidung und keine Aktion eines unbeteiligten Geräts um.

Solche Wirkungen brauchen ein eigenes Muster: bis nach Commit warten, einen Idempotenzschlüssel verwenden, einen dauerhaften Zustellauftrag speichern oder eine Kompensation festlegen. Kompensation ist eine neue geschäftliche Handlung, kein perfekter Rollback.

Die Datenbank kann deshalb korrekt committed sein, während eine externe Nachricht aussteht, doppelt oder fehlgeschlagen ist. Umgekehrt kann das Gerät gehandelt haben und die Transaktion später abbrechen. Ein ehrlicher Status führt Transaktionsbeschluss und externen Nachweis getrennt.

Eine Geschichte mit mehreren Urhebern

Grays Klarheit begründet keine Erzählung vom Alleinerfinder. Seine historische Notiz nennt Vorarbeiten von Ron Obermarck, Earl Jenner und Steve Weick und die unabhängige Entdeckung von 2PC durch Butler Lampson und Howard Sturgis. Mohan, Lindsay und Obermarck verfassten die R*-Analyse und ihre Optimierungen. Andreas Reuter ist Mitautor des späteren Standardwerks, Leslie Lamport Mitautor von Paxos Commit.

Gerade diese Abgrenzung macht Grays Beitrag präzise: Er lehrt, getrennt zu fragen, was ein System weiß, was es versprochen hat, wer entscheiden darf und welche Folgen außerhalb seiner Kontrolle bleiben.

Quellen