Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [namazu-users-ja] mknmz-2.0.2: die _("unsupported target: ")



  namazu-devel-ja に振ります。

<00Aug3.014348jst.29573@xxxxxxxxxxxxxxxxxx>の記事において
hide@xxxxxxxxさんは書きました。

>> immknmzをつかってメイルのインデックスをつくっています。
>> バックグラウンドでインデックスを作成しているときに
>> 微妙なタイミングでファイルを消したらmknmzが終了してしまいした。
>> 具体的には find_target で止まったようです。

  この問題は、ファイルの一覧を生成した時にはファイルがあって、いざ処理
をしようとした時にファイルが存在しないと die してしまうのだと思います。

>> *** mknmz.org	Thu Aug  3 00:39:42 2000
>> --- mknmz	Thu Aug  3 01:19:52 2000
>> *************** sub process_file ($$$$$$) {
>> *** 162,167 ****
>> --- 162,169 ----
>>       my ($cfile, $docid_count, $docid_base, $file_count, 
>>   	$field_indices, $fh_errorsfile, $total_files_num) = @_;
>>   
>> +     return (0, 0) if (! -f $cfile);
>> + 
>>       my $processed_num = 0;
>>       my $file_size = util::filesize($cfile);

  このパッチでも、-f $cfile と util::filesize の間でファイルを消されて
しまうとやはり問題になりますよね...

  確実な対策としては、Unix 環境なら file を open してその可否でファイ
ルの存在を確認することでしょうか。その後で消されても inode はまだ残り
ますから。

# そうやってできたインデックスに意味があるのかどうか、という問題もある?

  しかし、Win32 環境の場合はどうなるんでしょうか。この辺りに詳しい方い
らっしゃいませんか?

>>   	    find($wanted_closure, cwd());
>>   	    chdir $cwd;
>>   	} else {
>> ! 	    print STDERR _("unsupported target: ") . $target . "\n";
>>   	}
>>       }

  なにはともあれ die しないでに継続させた方が良いのかもしれない... die
するかわりに NMZ.log.critical とかに記録させるとか。
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)