web-dev-qa-db-ja.com

「使用可能なロックがない」とはどういう意味ですか?

SVNサーバーにコミットしようとしています。サーバーでは、SubversionリポジトリがNFSマウントされています。コミットを実行すると、次のエラーメッセージが表示されます。

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

これは以前は機能し、ソフトウェアのアップグレードや変更は何もありませんでした。ただし、NFSサーバーは以前にクラッシュしたため、「破損」している可能性があります(ここでも該当する場合)。

9
Rory

ここにはいくつかの可能性があります:

  1. SVN更新を実行しているユーザーアカウントに、リポジトリディレクトリに対する更新権限がない可能性があります
  2. リポジトリが格納されているNFSファイルシステムがいっぱいである可能性があります
  3. ロックデーモン(lockd)がNFSサーバーで実行されていない可能性があります。

更新:質問の更新に続いて、私は#3を疑います。 NFSサーバーの再起動時にlockdが起動するように設定されていることを確認してください。

12
gareth_bowles

NFSサーバーがロックをサポートしていることを確認してください。これを行うには、NFSサーバーで追加のプロセスを有効にする必要がある場合があります。 rpc.lockd(8) および rpc.statd(8) を参照してください。

さらに、NFSサーバーが最近再起動した場合は、古い、または部分的に古いNFSマウントがある可能性があります。 NFSマウントのアンマウントと再マウントも試してください。

編集: 他の質問 に基づいて、NFSサーバーがクラッシュから回復した後、lockdが起動しなかったようです。

3
Tel Janin

上記で言及した用語のこのGoogle検索 で言及されている代替案がいくつかあります。

言及されているオプションのいくつかは次のとおりです:完全なディスク、権限の問題、「ハング」または「スタック」svnserveプロセス、およびハングトランザクション...これらのさまざまな問題をいくつか試し、問題の正確な内容を確認する必要がある場合があります。場合。

Bsddb SVNバックエンドを使用しているようですね?リポジトリをfsfsバックエンドに移行することをお勧めします(現在数年間のデフォルト)。私の経験や他の多くの経験から、bsddbよりも信頼性が高いことが証明されています。あなたはそれがNFSとどのように相互作用するかを研究したいと思うでしょう-私はNFSでそれを使用していません。

考慮すべきもう1つのオプションは、SVNをNFS経由で使用せずに、SVNリポジトリがローカルに保存されているサーバー上でSSH経由で実行することです。これは、fsfsバックエンドを使用してすべてのSVN作業を行う方法であり、SVNリポジトリの問題が最後に発生したのを思い出せません。

ショーン

1

debianでNFSでSVNを使用している場合

これを実行してください:

/etc/init.d/portmap restart
0
SamZhou

私はここで同様の問題を抱えていました、私はvagrantのNFSマウントが原因です。上記のTel Janinの発言から、ホストOSでSudo service rpcbind restartを使用してrpcbindを再起動しました。これで私のVMがハングしました。再起動すると、不可解なNFSエラーfailed to start with result 'dependency'が発生しました。それはうまくいきました、そして私は今幸せなキャンピングカーです。

0
Justin Abrahms