<div dir="ltr"><div>村上です。</div><div><br></div><div>残念ながら後者ですね。</div><div><br></div><div>後者のデータを可能な限り、DBと更新クエリをコンパクト化し、</div><div>別途手段にて共有させていただきます。</div><div>少々時間がかかるかもしれません。<br></div><div><br></div><div>前者は複数のDBで同じ更新をずっと流してもあるDBでは起きて、</div><div>他のDBでは起きないということが結構あるので、再現がなかなか</div><div>難しそうなんですよね。</div><div><br></div><div>時間できたら検証環境作って、更新データをまとめて動的更新し</div><div>続けて再現できないか試してみます。</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">2020年5月19日(火) 6:49 Sutou Kouhei <<a href="mailto:kou****@clear*****">kou****@clear*****</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">須藤です。<br>
<br>
これ、最近原因を調べている(けどまだわかっていない)問題な気<br>
がします。<br>
<br>
>>> 現状、同じ更新をすれば、必ずfailed to decodeになるデータベースは用意できますが、<br>
>>> 参考になりますかね。<br>
<br>
これは、次の2つのデータがあるということですか?<br>
<br>
  * 問題のない(エラーになる前の)DB<br>
  * ↑に入れるとこのエラーが出る更新データ<br>
<br>
であれば提供してもらえると助かります。<br>
<br>
それとも次のデータですか?<br>
<br>
  * エラーになった後のDB<br>
  * ↑に再度入れるとこのエラーが再発する更新データ<br>
<br>
こちらでも提供してもらえると少し助かります。<br>
<br>
エラーになった後のDBは入手できそうなのですが、再発用の更新デー<br>
タは入手できそうなので、1つデータが増えて助かります。<br>
<br>
<br>
In <<a href="mailto:CANM%2BHhcYaOJ7j-QyH%2B3oT****@mail*****" target="_blank">CANM+****@mail*****</a>><br>
  "[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,<br>
  Naoya Murakami <<a href="mailto:visio****@gmail*****" target="_blank">visio****@gmail*****</a>> wrote:<br>
<br>
> 村上です。<br>
> <br>
> 自己レスばかりですいません。。<br>
> <br>
> term_idはmax_idで&を取る仕様みたいで実際は171ですのでbufferは問題なさそうでした。<br>
> 以下のgrn_p_dec()内のunpackで失敗しているみたいなのでやはりチャンクがおかしそうですね。<br>
> <a href="https://github.com/groonga/groonga/blob/6866ef08d386e63a7a26bae8fdaeb8f15a840ed9/lib/ii.c#L2237" rel="noreferrer" target="_blank">https://github.com/groonga/groonga/blob/6866ef08d386e63a7a26bae8fdaeb8f15a840ed9/lib/ii.c#L2237</a><br>
> <br>
> 壊し方を再現できたらまたご連絡いたします。<br>
> <br>
> 2020年5月18日(月) 19:13 Naoya Murakami <<a href="mailto:visio****@gmail*****" target="_blank">visio****@gmail*****</a>>:<br>
> <br>
>> 村上です。<br>
>><br>
>> buffer_data->term->tidが2147483819でなぜか2GiBちょいですね。<br>
>> 実際のこれのlexiconのkey数は126447481で"9"というキーのlexicon上の_idは<br>
>> 171になりますが、bufferが壊れているのですかね。<br>
>><br>
>> > select vgram_terms --filter '_key == "9"' --output_columns _id,_key<br>
>><br>
>> [[0,1589796398.446896,0.01889300346374512],[[[1],[["_id","UInt32"],["_key","ShortText"]],[171,"9"]]]]<br>
>><br>
>> やはりbufferが壊れるまでを再現できないと難しそうですかね。<br>
>><br>
>> 2020年5月18日(月) 18:12 Naoya Murakami <<a href="mailto:visio****@gmail*****" target="_blank">visio****@gmail*****</a>>:<br>
>><br>
>>> 村上です。<br>
>>><br>
>>> failed to decode / failed to merge chunk / failed to flush a bufferが出た場合、<br>
>>> 静的索引構築でチャンクを作り直すとエラーがでないようになるのですが、<br>
>>> このエラーはチャンクが壊れていることによるものでしょうか。<br>
>>><br>
>>> たまにマージができなくなってしまうときがあるのでチャンクの再作成を<br>
>>> しています。<br>
>>><br>
>>> 現状、同じ更新をすれば、必ずfailed to decodeになるデータベースは用意できますが、<br>
>>> 参考になりますかね。<br>
>>><br>
>>> 最近ようやくバージョンを上げたところで2年前ぐらいのGroongaのコードベースで<br>
>>> updateしたものも含まれると思います。<br>
>>><br>
>>> [ii][chunk][merge] failed to decode: <vgram_terms.description7>:<br>
>>> <"9">(2147483819)<br>
>>> [ii][buffer][merge] failed to merge chunk: <vgram_terms.description7>:<br>
>>> <"9">(2147483819): chunk:<987>, n-chunks:<9886><br>
>>> [ii][update][one] failed to flush a buffer: <vgram_terms.description7>:<br>
>>> <62108274>:<1>:<178>: term:<"96">, segment:<4917148>, free:<4>,<br>
>>> required:<16>: [ii][buffer][merge] failed to merge chunk:<br>
>>> <vgram_terms.description7>: <"9">(2147483819): chunk:<987>, n-chunks:<9886><br>
>>><br>
>>> こうなるまでを再現できなければ、難しいようであれば再作成してしまいます。<br>
>>><br>
>>> 以上、よろしくお願いします。<br>
>>><br>
>>><br>
<br>
_______________________________________________<br>
groonga-dev mailing list<br>
<a href="mailto:groon****@lists*****" target="_blank">groon****@lists*****</a><br>
<a href="https://lists.osdn.me/mailman/listinfo/groonga-dev" rel="noreferrer" target="_blank">https://lists.osdn.me/mailman/listinfo/groonga-dev</a><br>
</blockquote></div>