Google App Engine
indexの修復
最終更新日: 2009年6月3日

このサイトのソースコードを修正してupdateを行ったところ、突然今までのデータが表示されなくなってしまった。

はじめはバグを埋め込んでしまったかと疑ったが、ローカルの開発環境ではしっかり動いている。本番環境でいろいろと調べてみると、あるはずのデータがqueryで引っかからないことが判明。ということで、何かのはずみでindexがおかしくなってしまったのではないかと疑ってみた。

indexを完全に作り直すためには、

  1. index.yamlのバックアップを作成する。
  2. index.yaml中にあるauto generatedされたindexの定義をすべて削除する。
  3. updateを行う。
  4. vacuum_indexesを行う。ここで、すべての定義を削除する。
  5. Google App Engineのコンソールのindexesにて、すべてのindexが"Deleting"を経て無くなることを確認する。
  6. index.yamlのバックアップの内容をindex.yamlに戻す。
  7. updateを行う。
  8. Google App Engineのコンソールのindexesにて、すべてのindexが"Building"を経て"Serving"になるを確認する。

以上で、無事にすべてのデータが表示されるようになった。

ちなみに、不要になったindexを削除するために、ローカル環境にてindex.yamlの定義をすべて削除して、ひとつずつ必要なqueryが呼ばれるようにしていけばよさそうだが、気がつくと不要な定義がいつの間にか追加されていたりすることがある。これは、databeseへのアクセスのhistoryが残っていることが原因。(Linuxでは)/tmpに存在するhistoryファイルを削除してやればよい。詳細はこちらを参照。