Was bedeutet "keine Schlösser verfügbar"?

9

Ich versuche, mich auf einen SVN-Server festzulegen. Auf dem Server ist das Subversion-Repository NFS-gemountet. Beim Festschreiben wird folgende Fehlermeldung angezeigt:

svn: Can't get exclusive lock on file '/svn/repo/db/transactions/7802-2.txn/rev-lock': No locks available

Dies funktionierte früher und es wurden keine Software-Upgrades / Änderungen an irgendetwas vorgenommen. Der NFS-Server ist jedoch früher abgestürzt, sodass er möglicherweise "beschädigt" ist (falls dies hier überhaupt zutrifft).

Rory
quelle

Antworten:

12

Hier gibt es einige Möglichkeiten:

  1. Das Benutzerkonto, das die SVN-Aktualisierung durchführt, verfügt möglicherweise nicht über die Aktualisierungsberechtigung für das Repository-Verzeichnis
  2. Das NFS-Dateisystem, in dem das Repository gespeichert ist, ist möglicherweise voll
  3. Der Sperrdämon (lockd) wird möglicherweise nicht auf dem NFS-Server ausgeführt.

UPDATE: Nach dem Update der Frage würde ich # 3 vermuten. Stellen Sie sicher, dass lockd so eingerichtet ist, dass es beim Neustart des NFS-Servers gestartet wird.

gareth_bowles
quelle
1
"ps aux | grep lockd" auf dem Server hat Ausgabe, also denke ich, dass es läuft
Rory
Es war mit dem NFS-Server verbunden.
Francisco
Mein Fall war # 3. Behoben durch /sbin/service nfslock startin CentOS 6.8 ( Referenz: 18.1.1. Erforderliche Dienste
Joao Cenoura
3

Stellen Sie sicher, dass Ihr NFS-Server Sperren unterstützt. Möglicherweise müssen Sie zusätzliche Prozesse auf dem NFS-Server aktivieren, um dies zu erreichen. siehe rpc.lockd (8) und rpc.statd (8) .

Wenn Ihr NFS-Server kürzlich neu gestartet wurde, ist möglicherweise ein veralteter oder sogar teilweise veralteter NFS-Mount vorhanden. Versuchen Sie auch, die NFS-Halterung zu entfernen und wieder zu montieren.

BEARBEITEN: Basierend auf Ihrer anderen Frage sieht es so aus, als ob lockd nicht gestartet wurde, nachdem Ihr NFS-Server nach dem Absturz wiederhergestellt wurde.

Tel Janin
quelle
Früher funktionierte es, bis der NFS-Server abstürzte. In letzter Zeit wurden keine Software-Updates durchgeführt. Ich habe die Frage erweitert
Rory
Ihr NFS-Mount ist möglicherweise (teilweise) veraltet. passiert hier mit einem FreeBSD-basierten NFS-Server und Solaris-Clients. Das Umounting / Remounting der NFS-Freigabe behebt das Problem für uns.
Tel Janin
1
Ein Neustart des Clients mit dem NFS-Mount hat das Problem nicht behoben. (Obwohl es andere Computer gibt, die von diesem NFS-Server bereitgestellt werden, die ich nicht neu gestartet / erneut bereitgestellt habe)
Rory
1

Es gibt eine Reihe von Alternativen, die in dieser Google-Suche nach Begriffen erwähnt werden, die Sie oben erwähnt haben .

Einige der genannten Optionen sind: vollständige Datenträger, Berechtigungsprobleme, "hängengebliebene" oder "festgefahrene" Svnserve-Prozesse und blockierte Transaktionen ... Möglicherweise müssen Sie eine Reihe dieser verschiedenen Probleme ausprobieren, um festzustellen, wo genau das Problem liegt Fall.

Es hört sich so an, als würden Sie das bsddb SVN-Backend verwenden? Möglicherweise möchten Sie versuchen, Ihr Repository auf das fsfs-Backend zu migrieren (die Standardeinstellung seit mehreren Jahren). Es hat sich nach meiner Erfahrung und aus der Erfahrung einiger anderer, die ich kenne, als zuverlässiger als bsddb erwiesen. Obwohl Sie untersuchen möchten, wie es mit NFS interagiert, habe ich es nicht für NFS verwendet.

Eine weitere Option, die Sie in Betracht ziehen sollten, besteht darin, SVN nicht mehr über NFS zu verwenden, sondern es über SSH auf einem Server auszuführen, auf dem das SVN-Repository lokal gespeichert ist. Auf diese Weise erledigen wir unsere gesamte SVN-Arbeit mit dem fsfs-Backend, und ich kann mich nicht erinnern, wann wir das letzte Mal Probleme mit dem SVN-Repository hatten.

Sean

Sean Reifschneider
quelle
Wir verwenden FSFS Backend
Rory
+1 für volle Festplatten! Obwohl der NFS-Mount nicht voll war, war das Root-Laufwerk ...
hwjp
0

wenn Sie SVN mit NFS auf Debian verwenden

Führen Sie Folgendes aus:

/etc/init.d/portmap restart
SamZhou
quelle
1
Es kann hilfreich sein zu erklären, warum Sie dies als Antwort vorschlagen.
Drew Khoury
0

Ich hatte hier ähnliche Probleme, meine aufgrund der NFS-Reittiere von Vagrant. Ausgehend von dem, was Tel Janin oben gesagt hat, habe ich rpcbind sudo service rpcbind restartauf meinem Host-Betriebssystem neu gestartet . Das hing mein vm. Ich habe das neu gestartet, was mir einen kryptischen NFS-Fehler gab failed to start with result 'dependency'. Es hat aber funktioniert und ich bin jetzt ein glücklicher Camper.

Justin Abrahms
quelle