Doppelnummern; Zugriffsverletzung

Bernhard Eversberg EV at buch.biblio.etc.tu-bs.de
Do Jul 10 08:12:25 CEST 1997


Verlautbarung 95 der Entwicklungsabteilung                        970710
------------------------------------------

Doppelnummernvergabe; Zugriffsverletzung
----------------------------------------

Eins vorweg: solange ungeloeste Probleme oder auch nur unerklaerte 
Phaenomene im Raum stehen, wird V15cd nicht festgeschrieben.

Zwei solche Dinge sind jetzt geloest:

1. Zugriffsverletzung
---------------------

Tritt nach unseren Feststellungen nur auf, wenn

a) PRESTO oder UPDATE mit -S gestartet wird, obwohl schon jemand anders
   zugreift

b) UPDATE auf demselben Verzeichnis 2mal gestartet wird. Verantwortlich
   ist nicht die Datenbank, sondern die Protokolldatei UPRO. Jedes UPDATE
   braucht seine eigene. Mit Option -x<filename> kann man ihm eine andere
   zuteilen. (Handbuch Kap. 9.1) Oder das zweite UPDATE auf einem anderen
   Verzeichnis starten.


2. Doppelte IdNummern
---------------------

Das wurde nur bei Simultanlauf von 2 oder mehr UPDATEs verursacht, und nur
auf ziemlich schnellen Rechnern.
Es gab eine Sicherheitsluecke, die umgehend gestopft wurde:
Die Nummernvergabe erfolgte unmittelbart VOR der Sperrung der .TBL,
was natuerlich ein Lapsus war und in PRESTO nicht so ist. So konnte
es passieren, dass der andere UPDATE-Prozess schon wieder dran kam,
bevor der eine die .TBL gesperrt hatte, und seinerseits dann dieselbe
Nummer vergab. Jetzt wird zuerst die .TBL gesperrt, dann muss der andere
warten, bevor er seine Nummer vergibt, und wenn er wieder drankommt, ist
die neue Nummer schon da, also gibt er dann die naechste - wie es sein soll.

Haertetests mit Simultan-UPDATEs liefen nach dieser Korrektur fehlerfrei
und schnell durch: SNIFFER fand nichts, auch .LOG in Ordnung, keine
Doppelnummern.

UPDATE.LZH auf AC14\V15\PROG  ist erneuert.

MfG  B.E.






Mehr Informationen über die Mailingliste Allegro