Der Martin: Neuer Artikel: Sperren von Dateien

Beitrag lesen

Hallo Christian,

Ich verstehe nicht ganz, was Du jetzt wie meinst.

und dabei ist es doch gar nicht so kompliziert. ;-)

Folgende Situation (egal ob jetzt Linux oder Windows und ob jetzt SMB oder NFS): Rechner A ist der "Server", Rechner B und C sind die "Clients" (im SMB/NFS-Sinn). Sprich: Rechner A gibt irgend ein Verzeichnis frei, das auf Rechnern B und C eingebunden ist.

Klar soweit.

Nun sperrt ein Programm auf Rechner B eine Datei, die eigentlich auf Rechner A liegt. Was passiert, wenn ein Programm auf Rechner C nun die selbe Datei sperren will?

Das Ergebnis ist dasselbe, als wenn Rechner A, B und C identisch wären, die Datei also auf derselben Maschine liegt wie die beiden konkurrierenden Client-Applikationen.

[Den Fall, in denen gar keine Rechner überhaupt Dateien sperren können, weil Funktionalität deaktiviert oder ähnliches, betrachte ich hier mal nicht.]

Logisch. :-)

Rechner A, B und C sind Windows-Rechner (2000, 2003 oder XP z.B.). Auf Rechner B öffnet ein Prozess eine Datei auf Rechner A mit ShareMode == "ich teile gar nichts" und kurz darauf während die Datei noch offen ist versucht ein Prozess auf Rechner C die selbe Datei auch mit ShareMode == "ich teile gar nichts" zu öffnen. Was passiert hier?

Unter Windows bekommt Rechner/Prozess C eine Fehlermeldung (Sharing Violation) und muss den Zugriff selbständig wiederholen. Ein "Warte bis Datei freigegeben" gibt es unter Windows AFAIK nicht, wenn es nicht auf Anwendungsebene implementiert wird.

Ich wollte nur darauf hinaus, dass in deinem Szenario nicht die Clients B und C die Locks verwalten, sondern logischerweise der Server A. Die beiden Clients "reichen nur durch".
Selbst wenn auf Rechner B noch zwei Applikationen um den Zugriff konkurrieren würden und das OS (Windows) auf Rechner B theoretisch schon einen Konflikt feststellen könnte, reicht es beide Zugriffe an Rechner A weiter und lässt ihn den Konflikt feststellen.

Nur wenn das meine Zielgruppe gewesen wäre, dann hätte ich einen Abschnitt über C hinzugefügt

Den habe ich irgendwie vermisst. Denn der Artikel ist mit "Sperren von Dateien" überschrieben, auch die Einleitung ist zunächst allgemein gehalten. Dann gehst du auf vier sehr konkrete, spezielle Sprachen ein, ohne die Problematik zunächst allgemein sprachunabhängig zu beleuchten.

Ich meine, das ist völlig legitim so. Aber dann sollte der Titel vielleicht schon auf die spezielle Ausrichtung auf Web-typische Sprachen hinweisen.

Schönen Abend noch,
 Martin

--
Lieber eine Fliege im Porzellanladen
als ein Elefant in der Suppe.