具体的には、
- Subversion のリポジトリが NFS サーバ上にあり、FreeBSD からは mount_nfs している。
- mount_nfs をしている FreeBSD には、Subversion 1.4.x 以前がインストールされている。
- 適当なクライアント(バージョン/OSは問わない)から、一定個数以上のファイルを commit する(schemeは、file、svn+ssh、httpを問わない)。
svn: Can't remove 'db/transactions/1-1.txn': Directory not empty
というエラーメッセージが表示され、commit が fail してしまうことがあります。実際には commit 自体は成功し、ファイルの後片付けに失敗しているだけなのですが、ディレクトリ使用量が無駄に増加します (^^;。原因は、FreeBSD の getdirentries(2) が、open されているディレクトリ内のエントリが削除された場合、それを上手くハンドリングできないためです。
この現象は、当初MacOS X上の問題として報告され、MacOS Xでのみ対策が施されました。
その後、同じ問題がFreeBSDでも発生することが報告され、それを受け、r20459では、修正範囲がOS非依存の形式へと拡張されました。但し、残念ながら、この修正は、当時の trunk へのみ commit されており、1.4.xには反映されていません。
幸いにして、上記修正の取り込まれたSubversion 1.5.0のリリースが間近に迫っています。もし上記現象で困っている場合には、1.5.0の利用を試してみてはいかがでしょうか?
0 件のコメント:
コメントを投稿