Probleme bei Samba?/tbl-Datei gesperrt
glaser at ub.tum.de
glaser at ub.tum.de
Do Dez 27 09:58:49 CET 2001
Am 21 Dec 2001, um 10:55 hat Bernhard Eversberg geschrieben:
> On 20 Dec 01, at 18:41, glaser at ub.tum.de wrote:
>
> > So wie es aussieht, bleibt also als letzer Strohhalm nur die log-Datei. Und
> > die liefert eigentlich auch nicht das Gewünschte, denn beim letzten Eintrag
> > hat's ja noch funktioniert! Interessant ist doch der Eintrag, der NICHT mehr
> > geschrieben werden konnte.
> >
> NEIN! Das Programm speichert zuerst in die ALD, dann in die LOG, dann werden die
> Indexeintraege bearbeitet, dann TBL wieder freigegeben. Es ist also sehr
> wahrscheinlich, dass der letzte LOG-Satz auch derjenige ist, nach dessen
> Speicherung die TBL nicht wieder freigegeben wurde.
>
'Wahrscheinlich' schon; denn es ist auch denkbar, daß es zwar zur Sperre
der TBL gekommen ist, aber zu keinem Schreibvorgang aus welchen
Gründen auch immer.
Werte Allegrologen, lieber Herr Eversberg,
beim Fahnden in der tbl-Geschichte habe ich folgende Experimente
gemacht:
A. (Einzelplatzbetrieb, es exisitiert eine DB zs)
1. free zs.tbl
2. Ansehen mit he zs.tbl -> 1. Byte 00 OK!
3. unfree zs.tbl
4. Ansehen mit he zs.tbl -> 1. Byte 01 OK!
5. Aufruf der Datenbank, öffnen eines Satzes und schließen -> problemlos
möglich! Eigentlich erwartet: tbl-Datei gesperrt. kam aber nicht.
6. Nachgesehen mit he zs.tbl -> 1. Byte 01 immer noch!!!
7. Aufruf der Datenbank, ergänzen eines Satzes und abspeichern.
problemlos möglich! Eigentlich erwartet: tbl-Datei gesperrt. Kam aber nicht!!!
9. wie 4.
10. Kontrolle ob es sich auch um dieselbe tbl-Datei handelt: Aufruf der
Datenbank. Parken der Ausgabe. Aufruf he zs.tbl. Meldung: keinDatei.
Einigermaß ratlos wandte ich mich zum Programmaufruf, und siehe da: der
Einzelplatzmodus -S war gesetzt. Nach Entfernung desselben trat das
erwartete Verhalten auf: Also unfree -> Aufruf mit Änderung/Eintrag -> tbl-
Datei gesperrt -> free -> Änderungen möglich.
Ergebnis:
Obwohl es unnötig ist, im Einzelplatzmodus die tbl-Datei zu sperren, wäre
es m.E. der Konsistenz halber sinnvoll, entweder den -S-Parameter ganz
zu eliminieren, oder die Datenbanksperre auch hier wirken zu lassen.
Sonst ist das Verhalten zwar logisch nachvollziehbar, aber trotzdem
enigermaßen verwirrend.
B. (Voraussetzungen wie bei A)
1. unfree zs.tbl
2. Datenbankaufruf und Eränzungsversuch eines Satzes. Wie zu erwarten
kam 'zs.tbl gesperrt, bitte warten' u.z. 90 sec lang, wie von Herrn Eversberg
vor kurzem mitgeteilt. Danach kam der #-Prompt der Eingabe und
'Schweigen im Walde. Erneuter Specherversuch mit F10 liefert daselbe
Ergebnis. Bleibt also nur der Abbruch mit F8.
3.he zs.tbl -> 1.Byte noch immer 01.
Ergebnis:
Nach 90 sec wird zwar die Meldung 'tbl-Datei gesperrt' nicht mehr
ausgegeben, die tbl-Datei selber aber NICHT freigegeben (vermutlich käme
dann auch statt dem #-Prompt die Meldung 'Satz gespeichert'). Offenbar
wird beim Speichern festgehalten, ob der momentane Prozeß die tbl-Datei
manipuliert hat, oder jemand anderer (z.B.über unfree); denn sonst wäre
nicht einzusehen, warum die tbl-Datei nicht zurückgesetzt wird. Das würde
aber u.U. geordnete Schreibvorgänge durcheinanderbringen.
C.Netzbetrieb unter Samba mit einer DB mo. Gemountete LW:g:\allegro;
h:\aufruf, i:\daten
Experiment wie unter B mit demselben Ergebnis, d.h. nach 90 sec
verschwindet zwar die Meldung, nicht aber die DB-Sperre.
(Nebenbei: Server und Client wurden auf verschiedene Lokal-Zeiten gesetzt.
In der Log-Datei wird unter der Client-Zeit abgespeichert. Hat das
Konsequenzen? Und beim Speichern in die Log-Datei scheint es auch
KEINE Verzögerung zu geben. Vielleicht liegt's bei der PHP-Angelegenheit
doch nicht an Samba?)
D. Voraussetzungen wie bei C, diesmal mit einem zweiten Client, auf dem
dieselben Verzeichnisse unter denselben LW-Buchstaben gemountet
waren.
1. free mo.tbl
2. Aufruf der DB auf beiden Clients und Ergänzung zweier verschiedener
Sätze. Speichern gleichzeitig, d.h. Drücken der j-Taste gleichzeitig.
Ergebnis: Beide Sätze werden gespeichert, wobei kurzzeitig beim 2. Client
'tbl-Datei gesperrt' erschien. Ansonsten Verhalten normal.
E. Voraussetzungen wie bei D.
1. unfree mo.tbl
2. wie bei D.2.
Ergebnis: wie bei B.2 und B.3, d.h. TBL-Datei bleibt gesperrt. Mit allegro-
Mitteln scheint man nicht weiter zu kommen.
Weiterarbeiten mit Unix-Mitteln
Hier will ich mich küzer fassen. Per shell-Skript wird festgestellt, wann und
wielange die tbl-Datei gesperrt war. Der debug-Level von Samba wird
heraufgesetzt ( bei 2 werden schon die verwendeten Datei-Namen
angezeigt) und über die Zeitmarke versucht, den Übeltäter zu finden.
Das soll's dann wohl gewesen sein!
mfg gl
Mehr Informationen über die Mailingliste Allegro