[groonga-dev,03548] Re: Mroonga で data truncated for primary key column: <id> が発生する

Back to archive index

Kouhei Sutou kou****@clear*****
2015年 10月 5日 (月) 16:57:25 JST


須藤です。

In <20151****@domai*****>
  "[groonga-dev,03547] Re: Mroonga で data truncated for primary key column: <id> が発生する" on Mon, 05 Oct 2015 12:46:33 +0900,
  各務 洋 <kagam****@outwa*****> wrote:

>> 各務さん、これ(Groongaでselectすると同じ_idのレコードが返っ
>> てくる)が発生したときにlock_clearは使っていましたか?
>> 使っていたら発生してもおかしくないんですが、使っていなかった
>> ら発生するのはおかしいんです。
> 
> ご返答ありがとうございます。テスト時のログを確認してみました。

ありがとうございます!

> lock_clear はこの現象の後に使うように追加しているので、まだ使っていな
> い可能性が高いと思うのです。
> 
> (レコードの timestamp が 16:29 で、16:49 に mysqld の自動再起動に
> 1分20秒掛かって、ここで追加しています)

実は、該当レコードのタイムスタンプと問題発生時間の相関はない
のです。このテーブルは木構造のデータ構造でレコードを管理して
いるのですが、該当レコードが2つ見えているということは、その
木構造の中のノードのリンクが壊れているということです。該当レ
コードではなく、ノードのリンクが壊れていることがポイントです。

リンクはレコードの追加・削除のとき(!= 該当レコード作成時)
に変更するので、そのときに正しく変更できなければ壊れるのです。


ということで、lock_clearが原因で壊れた可能性が高いと思いまし
た。

> とはいえ、すっきりしないので、再度試してみたいと思います!
> (ただ、0 ではない重複はなかなか再現しないのです……。)

ありがとうございます!
が、現時点での情報でかなり怪しいのでムリしなくて大丈夫です!

> ちなみに、これは Mroonga のログに何か出たりするものでしょうか?
> mroonga_log_level = DUMP にしているのですが、特に変わらないようですので。
> 2015-09-30 16:31:03.147158|d|ba32a700|failed to find d=2
> ↑というのは出てきていました。

すみません、なにも出力するようにしていないので、DUMPでも出力
されないのです。

> P.S
> そういえば、 Index 上は a_id は 10001 で入っているようでした。

インデックスはレコードを保存している木構造データとは別の木構
造データなんですが、こっちは壊れていないということだと思いま
す。(10001というのがあるのでMroongaレベルでは壊れているので
すが、Groongaレベルでは壊れていないという意味。)


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:
  http://www.clear-code.com/services/code-reader/




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