[groonga-dev,04056] Groongaでプロセスを強制終了した不正なインデックスカラムを削除するとHOOKが残留しデータカラムが削除できなくなる

Back to archive index

Naoya Murakami visio****@gmail*****
2016年 6月 16日 (木) 10:39:08 JST


村上です。

Mroongaででかいインデックスの作成をやっていて気付いたのですが、

Mroongaで
alter table table_name add fulltext key (column_name);
とやり、
作成中にkillなどでmysqldが強制的に死ぬと、frmの更新は終わっていないため、

alter table table_name drop key column_name;
とすると、
ERROR 1091 (42000) at line 1: Can't DROP 'column_name'; check that
column/key exists
となりますが、

実態のGroongaのインデックスカラム自体は中途半端に以下のように存在しています。
column_listでも確認できます。

-rw-r-----. 1 mysql mysql  23M Jun 15 09:27
/var/lib/mysql/db_name.mrn.0000269
-rw-r-----. 1 mysql mysql 4.0K Jun 14 21:46
/var/lib/mysql/db_name.mrn.0000269.c
-rw-------. 1 mysql mysql 192G Jun 15 17:51
/var/lib/mysql/db_name.mrn.0000269pK52Xt

Groongaコマンドのcolumn_removeでこの不正なインデックスカラムを削除し、
一時ファイルをOSのrmで消すことによりインデックスカラム自体は
削除可能なのですが、データカラム側にHookが残留します。

その結果、 以下のエラーでデータカラムの削除ができなくなってしまい、
また、テーブルの削除もできなくなり、データベースごと再作成しか手がなくなります。

[column][remove][index] hook has a dangling reference

今のところ、私は一時的にC-APIで直接データカラムのHOOKを削除することにより対処
しましたが、こういうケースで対処できなくなったということを報告しておきます。
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
下载 



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