FreeBSDを語ろう Part 13
■ このスレッドは過去ログ倉庫に格納されています
0011名無しさん@お腹いっぱい。
2006/11/10(金) 15:02:07そーですよ。
/var/mail を NFS 共有してたとしよう。
無線 LAN 接続のクライアントで MUA が /var/mail/USER をロックしてメール
を取得し始める。その時、同僚が電子レンジを使って弁当を温めはじめたので、
一時的にネットワークがつながりづらくなった。
一方、サーバ側では新たなメールが届いたので /var/mail/USER をロックしよ
うとする。ロックされてはいるものの、ロック・タイムアウトまでに返事が来
ないので、ロックしたプロセスは存在しないものと見なしてロックを解除して
書き込む。
ようやくネットワークが復旧したクライアント側では、初期のサイズの
/var/mail/USER を読み終わったので ftruncate(fd, 0) して終了。
その間サーバ側で書き込んだメールは失われる。
UNIX の flock / fcntl セマンティクスではロックしたプロセスが生きてるか
どうかが重要なんだけど、NFS 経由では信頼性ある方法でそれを取得することが
できず、タイムアウトを併用せざるをえないっつーことね。
■ このスレッドは過去ログ倉庫に格納されています