Co oznacza „brak dostępnych zamków”?

9

Próbuję przypisać do serwera SVN. Na serwerze repozytorium subversion jest zamontowane w systemie plików NFS. Podczas wykonywania zatwierdzenia pojawia się następujący komunikat o błędzie:

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

Kiedyś to działało i nie było żadnych aktualizacji / zmian oprogramowania. Jednak serwer NFS wcześniej się zawiesił, więc może być „uszkodzony” (jeśli w ogóle ma to zastosowanie)

Rory
źródło

Odpowiedzi:

12

Jest tu kilka możliwości:

  1. Konto użytkownika wykonujące aktualizację SVN może nie mieć uprawnień do aktualizacji katalogu repozytorium
  2. System plików NFS, w którym przechowywane jest repozytorium, może być pełny
  3. Demon blokady (lockd) może nie działać na serwerze NFS.

AKTUALIZACJA: po aktualizacji pytania podejrzewam # 3. Upewnij się, że lockd jest skonfigurowany do uruchamiania po ponownym uruchomieniu serwera NFS.

gareth_bowles
źródło
1
„ps aux | grep lockd” na serwerze ma wyjście, więc myślę, że działa
Rory
Był związany z serwerem NFS.
Francisco
Moja sprawa była # 3. Naprawiono przez /sbin/service nfslock startw CentOS 6.8 ( odniesienie: 18.1.1. Wymagane usługi
joao cenoura
3

Upewnij się, że twój serwer NFS obsługuje blokady; w tym celu konieczne może być włączenie dodatkowych procesów na serwerze NFS; patrz rpc.lockd (8) i rpc.statd (8) .

Ponadto, jeśli serwer NFS został niedawno zrestartowany, być może masz stare lub nawet częściowo nieaktualne podłączenie NFS. Spróbuj również odmontować i ponownie zamontować uchwyt NFS.

EDYCJA: w oparciu o inne pytanie wygląda na to, że zablokowanie nie uruchomiło się po odzyskaniu serwera NFS po awarii.

Tel Janin
źródło
Kiedyś działało, aż do awarii serwera NFS. ostatnio nie było żadnych aktualizacji oprogramowania. Rozszerzyłem pytanie
Rory,
Twoje podłączenie do NFS może być (częściowo) nieaktualne; dzieje się tutaj z serwerem NFS opartym na FreeBSD i klientami Solaris. Zamontowanie / ponowne zamontowanie udziału NFS rozwiązuje problem dla nas.
Tel Janin,
1
zrestartowanie klienta, który miał podłączenie NFS, nie naprawiło tego. (Chociaż istnieją inne maszyny, które montują się z tego serwera NFS, których nie zrestartowałem / zamontowałem ponownie)
Rory
1

Istnieje wiele alternatyw wymienionych w tym wyszukiwaniu google dla terminów wymienionych powyżej .

Kilka wymienionych opcji to: pełne dyski, problemy z uprawnieniami, zawieszone lub zablokowane procesy svnserve i zawieszone transakcje ... Może być konieczne wypróbowanie wielu z tych różnych problemów, aby zobaczyć, na czym dokładnie polega problem walizka.

Wygląda na to, że używasz zaplecza SVN bsddb? Możesz spróbować przeprowadzić migrację swojego repozytorium do zaplecza fsfs (domyślnie od kilku lat). Z mojego doświadczenia i wielu innych, które znam, okazało się bardziej niezawodne niż bsddb. Chociaż będziesz chciał zbadać, w jaki sposób współdziała z NFS - nie użyłem go w NFS.

Inną opcją, którą warto rozważyć, jest odejście od używania SVN przez NFS i zamiast tego uruchamianie go przez SSH na serwerze z lokalnie przechowywanym repozytorium SVN. W ten sposób wykonujemy całą naszą pracę SVN z backendem fsfs i nie pamiętam, kiedy ostatni raz mieliśmy problemy z repozytorium SVN.

Sean

Sean Reifschneider
źródło
używamy zaplecza FSFS
Rory
+1 za pełne dyski! okazuje się, że chociaż mount NFS nie był pełny, dysk root był ...
hwjp
0

jeśli używasz SVN z NFS na Debianie

uruchomić to:

/etc/init.d/portmap restart
SamZhou
źródło
1
Pomocne może być wyjaśnienie, dlaczego sugerujesz to jako odpowiedź.
Drew Khoury
0

Miałem tutaj podobne problemy, moje z powodu mocowań NFS włóczęgi. Wychodząc z tego, co powiedział Tel Janin powyżej, zrestartowałem rpcbind sudo service rpcbind restartna systemie operacyjnym hosta. To zawiesiło mój vm. Zrestartowałem to, co dało mi tajemniczy błąd NFS failed to start with result 'dependency'. Jednak zadziałało i jestem teraz szczęśliwym obozowiczem.

Justin Abrahms
źródło