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

Back to archive index

Kouhei Sutou kou****@clear*****
2015年 9月 30日 (水) 22:20:14 JST


須藤です。

In <20150****@domai*****>
  "[groonga-dev,03517] Re: Mroonga で data truncated for primary key column: <id> が発生する" on Mon, 28 Sep 2015 13:11:32 +0900,
  各務 洋 <kagam****@outwa*****> wrote:

>> 手元でも試してみたいので、実際のテーブル定義を教えてもらうこ
>> とはできないでしょうか!?
> 
> テストを行ったのは下記になります。

ありがとうございます。

> ↑が全て実行中なのを確認しながら、mysqld を 何回も killする
> # kill -9 `ps ax|egrep -i "/usr/sbin/mysqld --basedir"|egrep -v "grep"|awk '{print $1}'`

おぉ。。。
mysqldがクラッシュするケースだったんですね。。。
それなら壊れてもおかしくないです。。。


> この、「ロックが残留」している状態というのは、他に確認する方法があるよ
> うでしたら試してみたいと思いますが、何かございますか?

Rroonga経由でCのAPIを呼んで確認するという方法はありますが、
やっていることはgrndb checkと変わらないので、grndb check
と結果は変わらないです。

> ここ数ヵ月でだいぶ減りましたが、現象としては値の破損より Index の破損
> の方が多いので、この点が何か分かればなぁと思っています。

MroongaレベルではGroongaの複数の操作で1つのMroongaの操作を実
現しているものがあります。

たとえば、UNIQUE KEYの場合は、最初にUNIQUE KEYを管理する
Groongaのテーブルにキーを追加しようと試みて、追加できたらレ
コードの中身を保存していく、という処理で実現しています。

もし、キーを追加した直後にクラッシュしたらキーだけが残ってレ
コードが作られていない状態になります。この状態でもGroonga的
には壊れていない(ロックが残留していない)状態ですが、
Mroonga的には壊れている状態になります。

そういう状態になっているのではないかと思います。

-- 
須藤 功平 <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