Что означает «нет доступных замков»?

9

Я пытаюсь зафиксировать на сервере SVN. На сервере хранилище Subversion смонтировано NFS. При выполнении коммита я получаю это сообщение об ошибке:

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

Раньше это работало, и не было никаких обновлений программного обеспечения / изменений ни на чем. Однако сервер NFS аварийно завершился раньше, поэтому он может быть «поврежден» (если это применимо здесь)

Рори
источник

Ответы:

12

Здесь есть несколько возможностей:

  1. Учетная запись пользователя, которая выполняет обновление SVN, может не иметь разрешения на обновление каталога репозитория.
  2. Файловая система NFS, в которой хранится хранилище, может быть переполнена
  3. Демон блокировки (lockd) может не работать на сервере NFS.

ОБНОВЛЕНИЕ: после обновления к вопросу, я подозреваю, # 3. Убедитесь, что lockd настроен на запуск при перезагрузке сервера NFS.

gareth_bowles
источник
1
«ps aux | grep lockd» на сервере имеет вывод, так что я думаю, что он работает
Rory
Это было связано с сервером NFS.
Франциско
Мой случай был № 3. Исправлено /sbin/service nfslock startв CentOS 6.8 ( ссылка: 18.1.1. Требуемые услуги
joao cenoura
3

Убедитесь, что ваш NFS-сервер поддерживает блокировки; вам может потребоваться включить дополнительные процессы на сервере NFS для достижения этой цели; см. rpc.lockd (8) и rpc.statd (8) .

Кроме того, если ваш NFS-сервер недавно был перезапущен, у вас может быть устаревшее или даже частично устаревшее монтирование NFS. Попробуйте также размонтировать и перемонтировать NFS-монтирование.

РЕДАКТИРОВАТЬ: на основе вашего другого вопроса , похоже, что lockd не запустился после восстановления вашего сервера NFS после сбоя.

Тель джанин
источник
Раньше работал, пока не сломался сервер nfs. не было никаких обновлений программного обеспечения в последнее время. Я расширил вопрос
Рори
Ваше монтирование NFS может быть (частично) устаревшим; здесь происходит с NFS-сервером на базе FreeBSD и клиентами Solaris. Размонтирование / перемонтирование общего ресурса NFS решает проблему для нас.
Тел Джанин
1
перезапуск клиента с монтированием NFS не помог. (Хотя есть другие машины, которые монтируются с того сервера NFS, которые я не перезагружал / перемонтировал)
Rory
1

Есть несколько альтернатив, упомянутых в этом поиске Google для терминов, которые вы упомянули выше .

Вот некоторые из упомянутых опций: полные диски, проблемы с разрешениями, «зависшие» или «зависшие» процессы svnserve и зависшие транзакции ... Возможно, вам придется попробовать несколько различных проблем, чтобы увидеть, в чем именно заключается проблема в вашем дело.

Похоже, вы используете серверную часть SVN bsddb? Возможно, вы захотите попробовать перенести свой репозиторий на серверную часть fsfs (по умолчанию уже несколько лет). По моему опыту и опыту многих других, кого я знаю, он оказался более надежным, чем bsddb. Хотя вы захотите изучить, как он взаимодействует с NFS, я не использовал его в NFS.

Другой вариант, который вы можете рассмотреть, - это отказаться от использования SVN поверх NFS и вместо этого запускать его через SSH на сервере с локально сохраненным хранилищем SVN. Вот как мы выполняем всю нашу работу с SVN с помощью fsfs, и я не могу вспомнить, когда в последний раз у нас были проблемы с хранилищем SVN.

Шон

Шон Рейфшнайдер
источник
мы используем серверную часть FSFS
Рори
+1 за полные диски! Оказывается, хотя монтирование NFS не было полным, корневой диск был ...
hwjp
0

если вы используете SVN с NFS на Debian

запустите это:

/etc/init.d/portmap restart
SamZhou
источник
1
Может быть полезно объяснить, почему вы предлагаете это в качестве ответа.
Дрю Хоури
0

У меня были похожие проблемы, мои из-за монтирования VFS vagrant. Исходя из сказанного Tel Janin выше, я перезапустил rpcbind с sudo service rpcbind restartмоей операционной системой. Это повесил мой вм. Я перезапустил это, что дало мне загадочную ошибку NFS failed to start with result 'dependency'. Это сработало, и я теперь счастливый турист.

Джастин Абрамс
источник