* is_freeze(): fopen() failed / Stale NFS file handle [#ncbeba19] - ページ: [[BugTrack2]] - 投稿者: [[teanan]] - 優先順位: 低 - 状態: 却下 - カテゴリー: その他 - 投稿日: 2008-03-09 (日) 03:53:24 - バージョン: 1.4.7 ** メッセージ [#t94ec1c4] ページを削除した直後に差分の削除やバックアップの削除を行うと、稀に下記のような表示が出ます。 is_freeze(): fopen() failed: ページ名 ちなみに発生するのは、このdevとdemoサイトのみで、%%officialでは発生しないようです%%~ → officialでも発生することを確認しました。 ** 該当部分のコード [#w6012f42] 本来ならば、is_page() でFALSEが返ってきてfopenに行かないはずなのですが、そうではないようです。 lib/func.php(v1.73): 78行目付近 if (! $function_freeze || ! is_page($page)) { $is_freeze[$page] = FALSE; return FALSE; } else { $fp = fopen(get_filename($page), 'rb') or die('is_freeze(): fopen() failed: ' . htmlspecialchars($page)); is_page()では file_exists()しているだけなので、ファイルキャッシュ系のトラブルのようです。 -------- - lib/file.php のfile_write() で、次のようにしてるのにですか? // ---- // Delete? if ($dir == DATA_DIR && $str === '') { // Page deletion if (! $file_exists) return; // Ignore null posting for DATA_DIR // Update RecentDeleted (Add the $page) add_recent($page, $whatsdeleted, '', $maxshow_deleted); // Remove the page unlink($file); // Update RecentDeleted, and remove the page from RecentChanges lastmodified_add($whatsdeleted, $page); // Clear is_page() cache is_page($page, TRUE); return; } else if ($dir == DIFF_DIR && $str === " \n") { is_page($page, TRUE); としてclearstatcache() を呼んでいるのに・・・って、[[clearstatcache の説明>PHP関数:clearstatcache]] では、 もし存在しないファイルに対して file_exists() をコールする場合、ファイルを作成するまで この関数は FALSE を返します。 もしファイルを作成した場合、 たとえファイルを削除したとしても TRUE を返します。 しかし、unlink() はキャッシュを自動的にクリアします。 とありますね。 -- &new{2008-03-09 (日) 10:28:33}; -- official が1.4.6 ベースで、dev がCVS ベースなので、その差分を[[cvs:lib/file.php?r1=1.40&r2=1.93]] と[[cvs:lib/func.php?r1=1.46&r2=1.93]] で見てみると、is_page() は変わっていないが、file_write() は変わっている・・・。こんなので、ヒントになるのかな?((実際には、official やdev 用の改造を施してあるはずですし)) -- &new{2008-03-09 (日) 10:28:33}; - 自分も気になってました。&br;たぶんfailed to open stream: Stale NFS file handle が発生しています。phpのキャッシュではなく、サーバーのディスク側の話です。officialでも発生しそうな気がするのですが、本当に発生しないんですかね?&br;fopenでNFSエラーだったら一定時間待って一度だけリトライっていう処理を入れたいな、とか考えてましたがまだためしてません。&br;本来ファイルシステム側でエラーじゃなくてNFS更新終わってから続きの処理、みたいにしてくれるべき気はするのですが....。 -- [[ぃぉぃぉ]] &new{2008-03-09 (日) 11:51:10}; -- やっぱりofficialでも発生します。ページ削除->すぐに差分表示、とすると再現しやすいです。 -- [[ぃぉぃぉ]] &new{2008-03-10 (月) 12:20:38}; -- おっとそうでしたか。失礼致しました (^^; -- [[teanan]] &new{2008-03-10 (月) 19:39:25}; -- いえいえ。officialサイトは試し辛いですからね^^;((無駄ページが作られるのを待って、それを削除するときに再現確認しましたw))&br;ちなみに、自分が関わっているプロジェクトでのpukiwikiで、error_reportingをE_ALLにしてNFSエラーのメッセージを確認しました。 -- [[ぃぉぃぉ]] &new{2008-03-10 (月) 20:23:58}; - 最近になって起こり始めたのなら、何が原因でしょうね。[[雑談]] に話が挙がっている、[[sourceforge.jp プロジェクトWebサーバ: PHPアップグレードとテストのお願い>http://sourceforge.jp/forum/forum.php?forum_id=14238]] の影響が、この話題に関してあったりするんだろうか? -- &new{2008-03-10 (月) 18:12:46}; -- まだアップデートされていないようです。予定は来週の3/17ですね。ちなみに本件は、最近になってからの事象ではなく、結構前からでていました (^^; -- [[teanan]] &new{2008-03-10 (月) 20:41:32}; -- テスト開始に伴う設定変更が理由ではなかったんですね。でも、結構前から~ だと、原因の特定が難しそうですね。 -- &new{2008-03-10 (月) 21:06:56}; - [[[ #12353] "Stale NFS file handle" エラーの発生>http://sourceforge.jp/tracker/index.php?func=detail&aid=12353&group_id=1&atid=113]] に、SFにおける状況の説明と対処が掲載されています。PukiWikiの問題ではないという結論の様ですので、このBugTrackのステータスは却下にしておきます。同様の現象が再現し続ける様であれば教えてください。-- [[henoheno]] &new{2008-05-10 (土) 04:08:15}; > リロードでエラーが起きたり起きなかったりするのは、複数ある > バックエンド web サーバのどれに繋がるかが切り替わる為です。 > > それはさておき、Stable NFS file handle のエラーが出て > しまうのは、おそらく現在使っているプロジェクトwebサーバの > カーネルの問題ですので、入れ替えて対処致します。 > プロジェクトwebサーバ群のカーネル入れ替えを行いました -- [[プロジェクトWebでのNFSの問題を修正しました>http://sourceforge.jp/forum/forum.php?forum_id=14647]] > これ以降問題は解決しているはずですが、自分のプロジェクトで > 問題がないかどうかご確認をお願い致します。 - お疲れ様です、了解しました((悩んで損した~))。 -- [[teanan]] &new{2008-05-10 (土) 10:11:23};