Tomotaka Ogino
tomot****@yo*****
2014年 8月 7日 (木) 11:54:37 JST
荻野です。 >> groonga HTTP デーモン(groonga-server-http)が起動している状況で、 >> コマンドラインからテーブルの削除・作成を行うと >> HTTP インタフェース経由のアクセス時に不思議な動作(カラム名がずれる)を >> することがあるようですので報告させて頂きます。 > > それは仕様なのです! > > Groongaはプロセスごとにファイルから読み込んだテーブル・カラ > ムをキャッシュしているんです。別のプロセスからテーブル・カラ > ムを削除・追加すると、元のプロセスは気付けないんです。なので、 > 不整合がおきます。 申し訳ありません、 やってはいけない事をやってしまっていたようですね…。 確認なのですが、インデックスの作り直しという目的に対して、 本来はデータの削除・追加で済む所を、 今回はスキーマの変更(テーブル自体の削除・作り直し)まで やってしまった事が問題なのですよね…? groonga HTTP デーモン側で検索(select)のみ、 コマンドラインの groonga から削除(delete)・追加(load)をする範囲であれば 問題はない(というか本来の特徴である参照ロックフリーが生かされる)、 という理解でよろしいでしょうか。 >> 3. HTTP 経由でカラム一覧を取得します。 >> % curl 'http://localhost:10041/d/column_list?table=FooBar' > > たぶん、↑を実行しないと再現しないですよね? > これは、一度もテーブル・カラムを触っていない状態だとプロセス > 内でファイルから読み込みもしないのでキャッシュしないからです。 はい、最後に一度だけカラム一覧を取得する場合は 正しく表示されることを確認しました。 >> なお groonga-httpd では発生しません。 > > うーん、これはどうしてかしら。 > ワーカー数を2つ以上にしていますか?もしそうなら、あるワーカー > では不整合が発生しているけど、他のワーカーでは発生していない > という状況になっているかもしれません。 groonga-httpd.conf の worker_processes は 1 でした。 いつ問題が起きてもおかしくない状況で、 たまたま起きなかっただけなのかも知れませんね…。 > なので、おかしいやろ、なんです。 > こういうときはHTTP経由でスキーマの変更を行ってください。 > そうすれば不整合は発生しません。 了解しました。ありがとうございます。 -- Tomotaka Ogino, Nagaokakyo-city, Kyoto, Japan E-Mail: tomot****@yo*****