Hiroyuki Sato
hiroy****@gmail*****
2015年 8月 7日 (金) 10:19:14 JST
須藤様 佐藤です。 ご連絡をありがとうございます。 インラインでコメントしました。 よろしくお願いします。 2015年8月6日 21:51 Kouhei Sutou <kou****@clear*****>: > 須藤です。 > > 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| ^ > > いえ、残念ながらエラーです。。。 ちょっと質問の仕方が悪かったかもしれないのでテストコードを作りました。 https://github.com/hiroyuki-sato/groonga-log_test エラーとして表示されるんだけど、実際にはデータがインサートされています。 私のGroonga::Clientの使い方が間違えているのでしょうか? > ログの読み方は↓に書いてあるのですが、 > 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/ > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev -- Hiroyuki Sato