Susumu Yata
susum****@gmail*****
2015年 10月 28日 (水) 19:23:27 JST
矢田です. > P.S > 矢田さんの報告にある、これも気にはなっているのですが……。 > https://github.com/groonga/groonga/issues/421 解決しました! 特殊ケースに対する例外処理を追加することで解決できました. 以下,内部実装について知らないと意味不明だとは思うのですが, 特殊ケースの例外処理について説明いたします. 削除時に到達した出力ノードが自己ループを構成する遷移一つのみを持つとき, 削除情報などの操作をスキップして,当該ノードへの遷移を取り除くようにしました. ただし,削除時の探索で既に自己ループを辿っているときは別とします. 以上です. 今後共よろしくお願いいたします. 2015年10月26日 20:26 各務 洋 <kagam****@outwa*****>: > お世話になります、各務です。 > >>> 2.ユニークインデックスの破損は発生します。 >> >> すみません、これの判断基準をおしえてもらえますか? > > DELETE しても INSERT 出来なくなる。というシンプルなものです。 > [groonga-dev,03556] で書かせていただいた方法で、確認用の処理を、 > > while true; do mysql -D db_teste4 -s -e "SELECT (SELECT current_timestamp) AS '', id AS '', a_id AS '' FROM tbl_test_pat_0005; SELECT '--' AS ''";done; > > で kill も込みで回しつづけていると、その内どちらかの Unique Key 分の > id が increment されなくなり、挿入側も、 > > ERROR 1062 (23000) at line 1: Duplicate entry '10001' for key 'a_id' > > と出続けるようになります。(10001 か 10002 かはその時々) > 実際にその値があるか無いかはあまり関係なく、Index だけが残るようです。 > > > 上記の状態で、 > > ALTER TABLE テーブル名 Engine Mroonga; > > で修復をかけていると、その内 a_id と 主キー に 0 が 入ったレコードがい > つでも見られるようになります。(DELETE/INSERT を停止していても ) > これが作られると頻繁に Duplicate entry が発生するようになります。 > (但し、値としては重複していません) > > >> ユニークインデックスを張ったカラムの値が0になっているカラム >> が複数見える、という感じでしょうか? > > 5.08では見えましたが、今の5.09候補では複数の0は見えなくなっています。 > > >>> 3.groonga.log に Auto repair is done は出現しませんでした。 >> >> やはりそうですよねぇ。 >> いや、でも、と思ってソースを確認したらバグっていました。。。 >> >> パッケージを作り直すのでそっちで確認してもらえるとうれしいで >> す。。。 > > おぉ、分かって良かったです。 > ありがとうございます、明日確認してみます。 > > > P.S > 矢田さんの報告にある、これも気にはなっているのですが……。 > https://github.com/groonga/groonga/issues/421 > > > ---- > 各務 > kagam****@outwa***** > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev -- Susumu Yata <susum****@gmail*****>