FACHWISSEN · TECHNIK & PROZESSE

Gleichzeitige Änderungen: Wie eine Versionsprüfung verlorene Aktualisierungen verhindert

Datenflüsse brauchen eindeutige Versionsstände. / Data flows need unambiguous versions.
Datenflüsse brauchen eindeutige Versionsstände.

Zwei Abläufe lesen denselben Datensatz. Der erste ergänzt einen Lieferhinweis, der zweite ändert die Zuständigkeit. Speichern beide anschließend jeweils ihren vollständigen alten Datenstand, kann die spätere Speicherung die frühere Änderung überschreiben. Beide Aufrufe können dabei technisch erfolgreich erscheinen.

Lesen ist noch keine Reservierung

Optimistische Nebenläufigkeitskontrolle erlaubt parallele Bearbeitung und prüft erst beim Schreiben, ob die gelesene Version noch aktuell ist. Bei HTTP kann ein starker ETag zusammen mit einer If-Match-Bedingung solche verlorenen Aktualisierungen verhindern. Ist die Bedingung nicht erfüllt, wird die Änderung normalerweise mit „412 Precondition Failed“ abgewiesen.

Die Versionskennung muss vom Zielsystem zuverlässig erzeugt und geprüft werden. Ein zusätzliches Feld im aufrufenden Ablauf allein schützt nichts, wenn das Ziel die Bedingung ignoriert oder Prüfung und Änderung nicht konsistent ausführt.

Ein nachvollziehbarer Konfliktfall

Ein fiktiver Serviceauftrag liegt in Version 7 vor. Zwei Bearbeitungen lesen diese Fassung. Nach der ersten Änderung entsteht Version 8. Die zweite Bearbeitung sendet ihre Änderung mit der Voraussetzung „Version 7 ist noch aktuell“. Das System erkennt den Konflikt, statt den neueren Stand still zu ersetzen.

Nun wird die aktuelle Fassung erneut gelesen. Änderungen an unterschiedlichen Feldern können nach einer dafür vorgesehenen Regel zusammengeführt werden. Betreffen beide Änderungen dieselbe fachliche Angabe, braucht es eine ausdrückliche Entscheidung. Ein Konflikt ist ein Informationssignal und nicht automatisch ein technischer Defekt.

Einfaches Wiederholen kann den Schutz aushebeln

Wird nach dem Konflikt nur eine neue Versionskennung eingesetzt und derselbe alte Dateninhalt erneut gesendet, kann die aktuelle Änderung trotzdem verloren gehen. Die erneute Verarbeitung muss den neuen Inhalt berücksichtigen und die beabsichtigte Änderung darauf neu bewerten.

Für eine Automatisierung sollte daher feststehen, welche Konflikte sie selbst auflösen darf. Beispielsweise kann ein zusätzlicher unabhängiger Vermerk angehängt werden; das Ersetzen eines bereits geänderten Verantwortlichen könnte dagegen zur Klärung weitergegeben werden.

Konflikte bewusst testen und messen

Ein geeigneter Test lässt zwei Bearbeitungen denselben Ausgangsstand lesen und schreibt anschließend nacheinander. Erwartet wird eine nachvollziehbare Konfliktmeldung beim zweiten veralteten Schreibversuch. Zusätzlich wird geprüft, dass keine Information unbemerkt verschwindet.

Viele Konflikte können auf zu große Datensätze, unnötiges vollständiges Überschreiben oder ungeeignete Zuständigkeiten hinweisen. Die Versionsprüfung schützt den aktuellen Stand; sie ersetzt keine saubere fachliche Aufteilung der Arbeit.

WordPress Cookie Plugin von Real Cookie Banner