Kouhei Sutou
kou****@clear*****
2015年 8月 6日 (木) 21:51:49 JST
須藤です。 In <CA+Tq-RqAq2aeizzEjbK-PRxN-jT_+vCcC=5Bzkd****@mail*****> "[groonga-dev,03390] groonga-clientとgroongaのログメッセージについて" on Wed, 5 Aug 2015 21:33:53 +0900, Hiroyuki Sato <hiroy****@gmail*****> wrote: > 1, groonga-clientについて > > groonga-clientで次のようにデータが入った時に件数がちゃんと入ったことを確認するのは > 次のように返ってきた値のbodyの数をみれば良いのでしょうか? > > # recordsは挿入するエントリのハッシュの配列 > ret =****@clien*****({:table => @out_table, > :values => records }) > > # 挿入(と更新)件数と、予定件数が一緒か確認 > ret.body == records.size はい、そうです。 > 以前エラーがあったら例外が上がると聞いていたので、件数が0件だったというのは > 検出したいと思っています。 すみません。。。 > groonga-clientのバージョンは0.1.7です。 > > > (3) エラーハンドリング > > > > 返ってくるエラー処理の例などどこかにありますでしょうか? > > fluent-plugin-groongaが参考になると思います。 > > 基本的にGroonga::Client::Errorでrescueすればいいです。 Groongaのloadはいわゆるバルクロードなので1つでも問題があった ら止まる、ではなく、できる限り処理をして、問題があったらログ に書く、という方針の動きになっています。なので、load中に変な データがあってもload的には「成功」なのです。 なので、全件loadできたかどうかはloadの結果に入っている件数と 自分が送ったデータの件数を確認してください。ただし、件数は同 じでもカラムの値がおかしいとか、カラム名をtypoしていて無視さ れていたというものには気付けないことに注意してください。 現状、↑のようなケースを検出するにはログを見るしかないで す。。。リモートから検出できるようにするにはどんなAPIにする のがいいんでしょうねぇ。バルクロードじゃない1件ずつロードす るAPIだとエラーを返すのは自然にできるんですけど、性能がでな いんですよねぇ。 > 2, groongaのログについて > > 次のようになメッセージがログに残るのですが、これはエラーではないと > 考えてよいのでしょうか? > > 2015-08-05 21:12:20.668028|n| thread start (0/1) > 2015-08-05 21:12:20.668492|e| ignored invalid char('=') at > 2015-08-05 21:12:20.668514|e| [{"field"= > 2015-08-05 21:12:20.668524|e| ^ > 2015-08-05 21:12:20.668532|e| ignored invalid char('>') at > 2015-08-05 21:12:20.668539|e| [{"field"=> > 2015-08-05 21:12:20.668547|e| ^ > 2015-08-05 21:12:20.668555|e| ignored invalid char('=') at > 2015-08-05 21:12:20.668563|e| [{"field"=>"文字列", "field2"= > 2015-08-05 21:12:20.668570|e| ^ いえ、残念ながらエラーです。。。 ログの読み方は↓に書いてあるのですが、 http://groonga.org/ja/docs/reference/log.html#process-log (あれ、翻訳していなかったんだっけ。。。) タイムスタンプの後の |X| の「X」の部分がログレベルを表しています。で、「e」はエラーと いう意味なのです。 > log-levelはinfoを指定、またはlog-level未指定です。 > エラーメッセージでなければ、ちょっと冗長かなと思います。 エラーメッセージなので冗長ではないのです。 > 一般的にどのぐらいのログレベルが適切でしょうか? 一般的にはデフォルトのnoticeが適切です。 開発時はinfoにして、少し困ったときはdebugにするというのはア リです。infoにするとクエリーで何件ヒットしたかとかがでるよう になったりします。debugにするともしかしたらヒントになる情報 があるかもしれない、という感じです。 -- 須藤 功平 <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/