[groonga-dev,04805] Re: [ii][update][one] failed to decode / failed to merge chunk / failed to flush a bufferが出たときについて

Back to archive index
Sutou Kouhei kou****@clear*****
2020年 5月 19日 (火) 06:49:33 JST


須藤です。

これ、最近原因を調べている(けどまだわかっていない)問題な気
がします。

>>> 現状、同じ更新をすれば、必ずfailed to decodeになるデータベースは用意できますが、
>>> 参考になりますかね。

これは、次の2つのデータがあるということですか?

  * 問題のない(エラーになる前の)DB
  * ↑に入れるとこのエラーが出る更新データ

であれば提供してもらえると助かります。

それとも次のデータですか?

  * エラーになった後のDB
  * ↑に再度入れるとこのエラーが再発する更新データ

こちらでも提供してもらえると少し助かります。

エラーになった後のDBは入手できそうなのですが、再発用の更新デー
タは入手できそうなので、1つデータが増えて助かります。


In <CANM+****@mail*****>
  "[groonga-dev,04804] Re: [ii][update][one] failed to decode / failed to merge chunk / failed to flush a bufferが出たときについて" on Mon, 18 May 2020 19:55:58 +0900,
  Naoya Murakami <visio****@gmail*****> wrote:

> 村上です。
> 
> 自己レスばかりですいません。。
> 
> term_idはmax_idで&を取る仕様みたいで実際は171ですのでbufferは問題なさそうでした。
> 以下のgrn_p_dec()内のunpackで失敗しているみたいなのでやはりチャンクがおかしそうですね。
> https://github.com/groonga/groonga/blob/6866ef08d386e63a7a26bae8fdaeb8f15a840ed9/lib/ii.c#L2237
> 
> 壊し方を再現できたらまたご連絡いたします。
> 
> 2020年5月18日(月) 19:13 Naoya Murakami <visio****@gmail*****>:
> 
>> 村上です。
>>
>> buffer_data->term->tidが2147483819でなぜか2GiBちょいですね。
>> 実際のこれのlexiconのkey数は126447481で"9"というキーのlexicon上の_idは
>> 171になりますが、bufferが壊れているのですかね。
>>
>> > select vgram_terms --filter '_key == "9"' --output_columns _id,_key
>>
>> [[0,1589796398.446896,0.01889300346374512],[[[1],[["_id","UInt32"],["_key","ShortText"]],[171,"9"]]]]
>>
>> やはりbufferが壊れるまでを再現できないと難しそうですかね。
>>
>> 2020年5月18日(月) 18:12 Naoya Murakami <visio****@gmail*****>:
>>
>>> 村上です。
>>>
>>> failed to decode / failed to merge chunk / failed to flush a bufferが出た場合、
>>> 静的索引構築でチャンクを作り直すとエラーがでないようになるのですが、
>>> このエラーはチャンクが壊れていることによるものでしょうか。
>>>
>>> たまにマージができなくなってしまうときがあるのでチャンクの再作成を
>>> しています。
>>>
>>> 現状、同じ更新をすれば、必ずfailed to decodeになるデータベースは用意できますが、
>>> 参考になりますかね。
>>>
>>> 最近ようやくバージョンを上げたところで2年前ぐらいのGroongaのコードベースで
>>> updateしたものも含まれると思います。
>>>
>>> [ii][chunk][merge] failed to decode: <vgram_terms.description7>:
>>> <"9">(2147483819)
>>> [ii][buffer][merge] failed to merge chunk: <vgram_terms.description7>:
>>> <"9">(2147483819): chunk:<987>, n-chunks:<9886>
>>> [ii][update][one] failed to flush a buffer: <vgram_terms.description7>:
>>> <62108274>:<1>:<178>: term:<"96">, segment:<4917148>, free:<4>,
>>> required:<16>: [ii][buffer][merge] failed to merge chunk:
>>> <vgram_terms.description7>: <"9">(2147483819): chunk:<987>, n-chunks:<9886>
>>>
>>> こうなるまでを再現できなければ、難しいようであれば再作成してしまいます。
>>>
>>> 以上、よろしくお願いします。
>>>
>>>



groonga-dev メーリングリストの案内
Back to archive index