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

BugTrack-wiki/344

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

Helpページを削除すると、トップページが表示できなくなる

  • 投稿者: takes
  • カテゴリ: 本体
  • 優先度: 低
  • 状態: 完了
  • 日時: 2011年11月02日 15時25分52秒

 内容

管理 - ページ管理で表示されるページ一覧で、
ページ名「Help」をチェックし、ページの削除の削除ボタンをクリックすると、ページ一覧の先頭が空白のページ名になる。
また、その状態になった後、右上のメニューからトップをクリックしても、いつまでたってもフロントページが表示されない。

FreeStyleWiki3.6.4 で、設置後、この Help ページの削除のみで発生しています。

 この操作をしたとき、pagelist.cacheは、

1:
2:Help/YukiWiki
3:Help/FSWiki
4:FrontPage
5:Help/Hiki
6:PluginHelp

(行頭の:までは、見やすくするために行番号をつけています。実物はpagelist.cache(139))となっていますので、行1が改行だけになるために発生する現象だと思います。(改行のみの行1を削除後、フロントページアクセスすると正常にフロントページが表示されます。)

 コメント

  • ご指摘の通り、本件、バグのようです。以下、詳細を記載します。 - ぐうます (2011年11月03日 12時37分46秒)
    • バグ概要:ページを削除しようとしたとき、そのページ名がページリストファイル(./log/pagelist.cache)の先頭行に記録されている場合、ページリストファイルからページ名が削除された後、先頭行が改行文字のみの行になってしまう。これにより、それ以降のページアクセスに応答しなくなる。
    • 本バグの発生するページ削除操作:上記報告でのページ削除操作は「管理ページからの削除」でしたが、FSWiki 上のページ削除操作であればいずれの操作であっても本バグを発生させます。
    • 本バグの発生する FSWiki バージョン:pagelist.cache を使用する全バージョン。すなわち、FSWiki3.6.3dev1 以降の全バージョン。
    • 修正案:差分ファイル DefaultStorage.pm.diff(143)

差分ファイル DefaultStorage.pm.diff(143) の内容:

--- ../wiki3_6_4/lib/Wiki/DefaultStorage.pm	2010-08-28 23:58:44.000000000 +0900
+++ lib/Wiki/DefaultStorage.pm	2011-11-03 12:24:46.000000000 +0900
@@ -205,7 +205,7 @@ sub _create_page_list_file {
 	}
 	if($flag eq "remove"){
 		my $names = Util::load_config_text(undef, $file);
-		$names =~ s/(^|\n)\Q$page\E\n/\n/;
+		$names =~ s/(^|\n)\Q$page\E\n/$1/;
 		Util::save_config_text(undef, $file, $names);
 	} elsif($flag eq 'update'){
 		# ページの更新時は何もしない
    • FSWiki3.6.4 に上記差分を適用した修正済ファイル:DefaultStorage.pm(145)
      • file_lock(), file_unlock()を使用しているので、本修正済ファイルは FSWiki3.6.3dev1 には適用できません。
      • 修正済ファイルを適用するには、./lib/Wiki/DefaultStorage.pm と差し替えて下さい。
  • なお、./log/pagelist.cache の先頭行に記録されているページ名が、運用上削除しないであろうと思われるページであれば、本バグを気にする必要はありません(当たり前ですが)。 - ぐうます (2011年11月03日 13時48分04秒)
    • 初期状態の FSWiki がもつページ(FrontPage, Help/FSWiki, Help/Hiki, Help/YukiWiki, Help, PluginHelp)で最初の ./log/pagelist.cache が作成された後、以降の新規作成ページ名は ./log/pagelist.cache の末尾に追加されていきますので、./log/pagelist.cache の先頭行に記録されたページを削除しない限り、./log/pagelist.cache の先頭行は変化しません。
    • 先頭行に記録されたページが FrontPage である場合(実はこのパターンは多いのではないかと思います)は、通常、FrontPage は削除できないので、本バグには運用上引っかからないと思われます。
  • 早急な対策ありがとうございました。他にもページ削除することで同じ現象がおきるのではないかと、少し不安がありましたが、通常は起こりえないことがわかり安心しました。 - takes (2011年11月04日 09時13分56秒)
  • ぐうますさん、ありがとうございます。Subversionには修正をコミットしましたのでステータスを「完了」にしておきます。次回のリリースで修正されます。 - たけぞう (2011年11月05日 22時33分33秒)
お名前: コメント:
DefaultStorage.pm DefaultStorage.pm.diff pagelist.cache

最終更新時間:2011年11月05日 22時33分33秒