Назад | Перейти на главную страницу

Что означает «нет доступных блокировок»?

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

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

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

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

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

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

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

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

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

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

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

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

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

Шон

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

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

/etc/init.d/portmap restart

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