Namazu-win32-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
NMZ.status Bug?
- From: "Yoshinori.TAKESAKO" <takesako@xxxxxxxxx>
- Date: Wed, 4 Oct 2000 19:25:58 +0900
- X-ml-name: namazu-win32-users-ja
- X-mail-count: 00362
竹迫です。
Namazu 2.0 for Win32 の mknmz においてバグと思われる
現象がありましたので、ご報告させていただきます。
● 環境
Windows NT4.0 SP5 / Windows 95 OSR2.1
Namazu 2.0.5-pre4 / Namazu 2.0.4 for Win32
ActivePerl 5.00503 build 522 で確認
● 現象
インデックスを複数回更新すると、Total Documents の数がうまく
カウントされない。(NMZ.status が正しく更新されていない)
● 再現方法
1. まず初めに 1つのファイルを検索対象に含め、インデックスを作成する
→ Total Documents: 1
2. 次に 5つのファイルを追加し、インデックスを更新する
→ Total Documents: 6
3. そして 1つのファイルを追加し、インデックスを更新する
→ Total Documents: 7 となるはずが、2 となってしまう
● 再現結果
このときの NMZ.head.ja の一部と NMZ.log NMZ.status ファイルの内容を
以下に記載いたします。
---- [NMZ.head.ja] 一部 ここから ----
現在、<!-- FILE --> 2 <!-- FILE --> の文書がインデックス化され、
<!-- KEY --> 2,917 <!-- KEY --> 個のキーワードが登録されています。
---- [NMZ.head.ja] 一部 ここまで ----
---- [NMZ.log] ここから ----
[Base]
Date: Wed Oct 4 18:15:41 2000
Added Documents: 1
Size (bytes): 23,552
Total Documents: 1
Added Keywords: 259
Total Keywords: 259
Wakati: module_kakasi -ieuc -oeuc -w
Time (sec): 44
File/Sec: 0.02
System: MSWin32
Perl: 5.00503
Namazu: 2.0.5
[Append]
Date: Wed Oct 4 18:17:20 2000
Added Documents: 5
Size (bytes): 88,035
Total Documents: 6
Added Keywords: 2,650
Total Keywords: 2,909
Wakati: module_kakasi -ieuc -oeuc -w
Time (sec): 58
File/Sec: 0.09
System: MSWin32
Perl: 5.00503
Namazu: 2.0.5
[Append]
Date: Wed Oct 4 18:19:34 2000
Added Documents: 1
Size (bytes): 35,409
Total Documents: 2 ← ここが 7 となるはず...
Added Keywords: 2,658
Total Keywords: 2,917
Wakati: module_kakasi -ieuc -oeuc -w
Time (sec): 45
File/Sec: 0.02
System: MSWin32
Perl: 5.00503
Namazu: 2.0.5
---- [NMZ.log] ここまで ----
---- [NMZ.status] ここから ----
files 1
keys 259
argv -O E:\namazu\index E:\namazu\test
cwd E:/namazu
files 6
keys 2909
argv -O E:\namazu\index E:\namazu\test
cwd E:/namazu
files 2
keys 2917
argv -O E:\namazu\index E:\namazu\test
cwd E:/namazu
---- [NMZ.status] ここまで ----
↑このファイルおかしいですよね...
● 原因
put_status() で新たに files キーの値を更新するときに、
unlink $var::NMZ{'status'} が失敗し、古い値の書き込まれた
NMZ.status が削除されずに追記されてしまう。
get_status("files") では、一番上にある files の行の値を
読み取ってしまうため、Total Documents: の値を正しく計算
できなくなる。
● 対処方法
mknmz の get_status() において使用されているファイルハンドル $fh を
明示的に開放 (close) するようにする。添付のパッチファイル参照
→ mknmz-status-patch.txt
同様のことを Linux や IRIX の環境で試してみましたが、このような問題は
発生しなかったので、Windows 版 ActivePerl 特有の問題だと思われます。
手元に環境がないため ActivePerl 5.6 では試していません。
他に Namazu 2.0 for Win32 を使っておられる方で、
同様な現象が確認できた方はいらっしゃいますでしょうか?
# もしかしたら、私の環境だけなのかな...(^^;
# 何回もインデックスを更新していくうちに Total Documents: の値が
# おかしくなってしまうので、結構悩んでしまいました。
--
広島市立大学 情報科学部 情報機械システム工学科
竹迫 良範 <takesako@xxxxxxxxx>
--- mknmz.org Wed Oct 04 17:52:23 2000
+++ mknmz Wed Oct 04 19:01:11 2000
@@ -1848,18 +1848,19 @@
sub get_status($) {
my ($key) = @_;
my $fh = util::fopen($var::NMZ{'status'});
return undef unless defined $fh;
while (defined(my $line = <$fh>)) {
if ($line =~ /^$key\s+(.*)$/) {
util::dprint("status: $key = $1\n");
+ $fh->close;
return $1;
}
}
return undef;
}
sub put_total_files($) {
my ($number) = @_;
$number =~ tr/,//d;