Kouhei Sutou
kou****@cozmi*****
2014年 8月 6日 (水) 21:46:10 JST
須藤です。 In <53E22****@yo*****> "[groonga-dev,02573] カラム名がずれる現象" on Wed, 06 Aug 2014 21:34:07 +0900, Tomotaka Ogino <tomot****@yo*****> wrote: > 荻野と申します。groonga は 1.2.9 の頃から愛用させて頂いております。 ありがとうございます! それはとてもうれしいです! > groonga HTTP デーモン(groonga-server-http)が起動している状況で、 > コマンドラインからテーブルの削除・作成を行うと > HTTP インタフェース経由のアクセス時に不思議な動作(カラム名がずれる)を > することがあるようですので報告させて頂きます。 それは仕様なのです! Groongaはプロセスごとにファイルから読み込んだテーブル・カラ ムをキャッシュしているんです。別のプロセスからテーブル・カラ ムを削除・追加すると、元のプロセスは気付けないんです。なので、 不整合がおきます。 > 3. HTTP 経由でカラム一覧を取得します。 > % curl 'http://localhost:10041/d/column_list?table=FooBar' たぶん、↑を実行しないと再現しないですよね? これは、一度もテーブル・カラムを触っていない状態だとプロセス 内でファイルから読み込みもしないのでキャッシュしないからです。 > 5. 再度 HTTP 経由でカラム一覧を取得します。 > % curl 'http://localhost:10041/d/column_list?table=FooBar' 3.を実行していないと、ここで初めてテーブル・カラムをファイル から読み込むので不整合も置きないはずです。 > なお groonga-httpd では発生しません。 うーん、これはどうしてかしら。 ワーカー数を2つ以上にしていますか?もしそうなら、あるワーカー では不整合が発生しているけど、他のワーカーでは発生していない という状況になっているかもしれません。 > また、発生した場合でも、groonga HTTP デーモンを立ち上げ直せば解消します。 > % curl 'http://localhost:10041/d/shutdown' > % /usr/local/bin/groonga -p 10041 -d --protocol http ./foobar/foobar.db はい、そうなると思います。再起動するとまたファイルからテーブ ル・カラムを読み込むので不整合が解消すると思います。 > 業務で開発しているシステムで groonga の全文検索のインデックスを作り直す目的で > テーブルの削除・再作成を行った所、全文検索ができなくなった問題を調査した中で見つけたのですが、 > そもそもその使い方はおかしいやろ、などのご指摘も頂けましたら幸いです。 なので、おかしいやろ、なんです。 こういうときはHTTP経由でスキーマの変更を行ってください。 そうすれば不整合は発生しません。 > バグのようなら Redmine に登録させて頂きます。(アカウントの承認お待ちしております) バグではないのですが、承認しました! -- 須藤 功平 <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/