=?iso-8859-1?q?allegro_killt_datenbank_(ald's=3F)_,_nit_m=F6g
Thomas Berger
ThB at gymel.com
Do Aug 2 11:35:55 CEST 2001
Lieber Herr Lehmann,
> vorfall:
> heute (montag) punkt 11.02 melden die 5 kollegen: recno nicht
> gefunden, datensatz zu groß oder ähnlich lautende
> fehlermeldungen. angeblich nix ernstes/garnix außer diesem
> allegro-problem IM netz passiert. also z.b. kein stromausfall
> o.ä.
...
> endlich bin ich abends vor Ort: sehe, daß die datenbank der
> oben erwähnten datensicherung auf der diskette zwar aus einer
> datendatei besteht, die 400kb groß ist. aber sie enthält am ende
> einen datensatz, und der rest besteht aus hex-Nullen. upps. (wo
> habe ich das schon mal gesehen?)
ich selber habe soetwas noch nicht gesehen, daher nur
einige allgemeine Ueberlegungen:
* Wenn Sie ein seek() auf eine bestimmte Position in
einer Datei machen, die gar nicht so lang ist,
wird der Rest (=Anfang) je nach Plattform mit Nullen
aufgefuellt
* Ich hatte vorgestern ein Encounter mit einer Antiviren-
Software (selbstgeschriebene bla.bat einer spezifischen
Laenge wurde als Virus denunziert), die Datei war
wohl irgendwie gesperrt. Nicht auszuschliessen ist,
das eine Antiviren-Software die .ALD in "Quarantaene"
gesteckt hat (kenne mich aber wirklich nicht aus damit).
* Backup- und Virensoftware gehen m.E. recht ruppig
mit Dateien um, Sharing-Mechanismen, wie allegro sie
einsetzt, brechen dann evtl. zusammen (aber auch
Acrobat Reader und Word, WordView etc. setzen
Locks auf Dateien, auf diese Dateien kann dann
von anderen Programmen nicht zugegriffen werden)
* Allegro ist vorzuwerfen, dass es keine Kontrollmechanismen
hat: Etwa wenn eine Indexzeile gelesen wird und das
scheitert (weil ein anderes allegro-Programm gerade
etwas zu langsam im Index herumschreibt), dann ist (war?)
die (falsche) Schlussfolgerung, dass der Index zu Ende
ist. Wenn ein allegro-Programm denkt, dass eine .ald-
Datei soundso lang ist und am Ende einen Neusatz eintragen
will, wird nicht getestet, ob das Dahinbewegen klappt
oder das Schreiben klappt oder was auch immer.
Exakter, aber trotzdem nur mein persoenlicher Eindruck:
Allegro ist "optimistisch", d.h. es kontrolliert die
Ergebnisse von Systemaufrufen, die bei normalem Betrieb
variieren koennen. Mehrplatzprogramme sollten m.E.
aber "paranoid" programmiert sein: Jeder Systemaufruf
sollte auf einen Fehlercode kontrolliert werden (beliebter
Perl-Ratschlag ist z.B.: Schliessen einer zum Schreiben
geoeffneten Datei kann einen Exit-Code liefern, naemlich
wenn die Platte zwischendurch vollgelaufen war).
Vermutlich also ist Allegro in Ihrer Situation "unschuldig",
aber aehnlich unschuldig wie jemand, der staendig Nachts in
dunklen Parks spazierengeht.
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro