[Allegro] Frage zu acon und "put"

Thomas Berger ThB at Gymel.com
Mo Jan 9 12:15:14 CET 2012


Lieber Herr Eversberg,

>> Naja, nach 500 Warnings zu diesem Satz wird dann ein Error
>> protokolliert und der Satz uebersprungen:
>>
>>
> Das kommt natürlich raus. Wie gesagt, zuerst wird "if Lock" gemacht,

Eine Aussage, die sowohl "if Lock" als auch "zuerst" enthaelt,
kann ganz automatisch mit "Race condition" getaggt werden.


> wenn das der Fall ist, sofort der Satz in die upro ausgeworfen und
> weiter zum nächsten. Das geht völlig verzögerungsfrei.

vgl. die Folgemail: "Sofortiges" (aus Sicht des Jobs, d.h.
das set lock benoetigt evtl. eine kleine Anzahl von Sekunden,
bis es fuer sich entschieden hat, dass die Sperre unfluechtig
genug ist, um lieber zu melden als zu warten) Uebergehen des
Datensatzes ist gewiss schaedlich (genau wie das derzeit
implementierte "ewige" Warten).

Mir ist natuerich klar, dass mehrminuetige Datensatzsperren
ein PRESTO-Phaenomen waren, unter a99 oder im Web-Kontext
wird das anders geregelt (die entsprechende Zeitstempel-
Heuristik wurde zwar letzten Sommer geflickt, eine ganz
sichere Loesung steht allerdings immer noch aus). Nicht
auszuschliessen ist aber, dass irgendwann komplexe Jobs
(ORDER-Kontingent-Neuberechnungen oder irgendetwas mit
Ausleihe oder "Buchen" allgemein) einen Datensatz durchaus
fuer eine gewisse Zeit exklusiv im Zugriff halten wollen,
da sollten Update-Timeouts nicht zu kurz sein.

Fundamental ist allerdings die Frage, was speziell ein (Offline-)Update
eigentlich wirklich tun soll: Ewig warten wie UPDATE.EXE (garantiert die
Integritaet, dauert aber evtl. zu lange) oder nach einer gewissen Zeit
(welche mag das sein) den Satz ueberspringen (koennte ein Kompromiss
sein) bzw. die gesamte Verarbeitung abbrechen (auch das waere in
manchen Situationen das einzig "korrekte"). Vermutlich wird man
hier einen Schalter implementieren muessen, der alle diese Faelle
beruecksichtigt, Standardverhalten koennte dann aus Kompatibilitaets-
gruenden das "ewig warten" von UPDATE.EXE sein.

(Zu beruecksichtigen ist dann auch noch, dass je nach Update-Modus ein
gesperrter Datensatz, der ja insbesondere vorhanden ist, eigentlich
gar nicht zur Blockade fuehren braucht, niemand aber weiss, ob der
Anwender dies als Vorabtest durchfuehrt, so dass Warnungen bezueglich
gesperrter Saetze durchaus erwuenscht sein koennen...)

viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro