トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BugTrack-wiki/325

ページの作成や編集にはユーザ登録が必要です。

ページ削除しても config/*/modtime.dat からそのページのデータが削除されない。

  • 投稿者: ぐうます
  • カテゴリ: 本体
  • 優先度: 低
  • 状態: リリース済
  • 日時: 2008年12月14日 13時58分31秒

 内容

ページを削除しても、更新日時保存ファイル config/*/modtime.dat からそのページのデータが削除されず、そのまま残ってしまうようです。外から見える動作としては問題ありませんが、config/*/modtime.dat にゴミデータが蓄積するので、その分だけ毎回の config/*/modtime.dat の読込み時間が無駄に長くなってしまいます。

原因

Wiki::DefaultStorage::save_page() において、ページ削除時の処理から漏れているため。

対象となる FSWiki バージョン

全てのバージョン

備考

ML 2006 年 1 月の記事:『Re: showlevel.log 内の page_level 削除について』によると、そのときの議論に基づいて参照権限保存ファイル config/*/showlevel.log 内のデータについてはページ削除時に削除されるように変更されたようです。このときに config/*/modtime.dat については変更されなかったのは、もしかすると何か意図があった可能性もあります。

パッチ

修正案のパッチを、DefaultStorage.pm.patch(361) として添付致します。

  • 適用すると Wiki::DefaultStorage::save_page() が変更され、ページ削除時に config/*/modtime.dat からそのページの更新日時データが削除されるようになります。
  • 本パッチ適用前の運用で既に config/*/modtime.dat に残ってしまったゴミデータについては、本パッチを適用しても削除されません。必要であれば手動で各ページの有無を確認し、削除済みページに該当する行を config/*/modtime.dat から削除下さい。
  • 本パッチは、FSWiki 3.6.3dev3 に対して作成しました。そのまま patch できると思われるのは FSWiki 3.6.3dev1〜3 になります。FSWiki 3.6.2 を含む、それ以前のバージョンに適用する場合には、適宜修正下さい。
--- ../wiki3_6_3dev3.orig/lib/Wiki/DefaultStorage.pm	Mon Dec 31 12:05:37 2007
+++ lib/Wiki/DefaultStorage.pm	Sun Dec 14 12:27:26 2008
@@ -146,8 +146,11 @@
 	if($content eq ""){
 		$self->_create_page_list_file($page, 'remove');
 		unlink($wikifile);
 		$wiki->set_page_level($page);
+		my $modtime = &Util::load_config_hash($wiki,$MODTIME_FILE);
+		delete $modtime->{$page};
+		&Util::save_config_hash($wiki,$MODTIME_FILE,$modtime);
 		# 削除時はバックアップファイルを残す
 		#unlink(&Util::make_filename($wiki->config('backup_dir'),&Util::url_encode($page),"bak"));
 	} else {
 		$self->_create_page_list_file($page, $flag);

 コメント

  • パッチをコミットしました。 - たけぞう (2008年12月14日 16時07分31秒)
  • コミットしていただき、ありがとうございます。 - ぐうます (2008年12月14日 17時47分52秒)
  • 3.6.3でリリースしました。 - たけぞう (2008年12月14日 23時30分19秒)
お名前: コメント:
DefaultStorage.pm.patch

最終更新時間:2008年12月14日 23時30分26秒