Namazu-devel-ja(旧)


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

Re: negative integer bug



<20000803102620L.satoru-t@xxxxxxxxxxxxxxxxxx>の記事において
satoru-t@xxxxxxxxxxxxxxxxxxさんは書きました。

>> >  write_index_sub などの中で index の merge をする時に、追加分の最初の
>> >docid が既存のデータの最後の docid よりも小さい時に adjust_first_docid 
>> >で negative になってしまう、というのが原因のようです。
>> 
>> 「追加分の最初のdocid が既存のデータの最後の docid よりも小
>> さい」という状況はあってはいけません。

  うーむ、そうなんですか... 

>> 再現する方法はありませんか? 少ない文書で再現できるといいのだけど。

  自分がこの状況に陥いった話を聞いた限りでは、どれも大量の文章をインデッ
クス化する時でした。
  今回は Debian JP の ML archive の構築時発生しているという話でしたの
で、こちらで再度状況を見てみます。

>> >  そもそもそうなってしまうこと自体がおかしいのかどうかは良くわからなかっ
>> >たのですが、とりあえずここのロジックを変更して append_record という関
>> >数を新たに導入することで対処してみました。
>> 
>> 肝心なロジックがわからずに解決できるのだろうか…。 
>> 
>> docid は差分で記録される:

  あ、はい、この辺りの話まではわかります。

>> この図からわかると思いますが、「追加分の最初のdocid が既存の
>> データの最後の docid よりも小さい」という状況はあってはいけ
>> ないのです。

  つまり、追加分は必ず既存のデータでインデックス化された文章を含まない
から、という前提があるわけですね? そこに今一確信がもてなかったのであの
ような対処になってしまいました。

>> 見てみました。無用に複雑なことをしているように見えます。

  いやもう、その通りです。あと、別のバグが件のコードに含まれていたよう
なので、make check fail はそっちが原因っぽいです。
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)