SyntaxHighlighter

2011年10月8日土曜日

GAE/Jにてインデックスエラーでデプロイが失敗する場合の対処など


この記事は、下記の素晴らしい記事について、MAC環境での補足を行うものです。

GAE/J使いのためのインデックス削除ツール(y-kawazの日記)
http://d.hatena.ne.jp/y-kawaz/20100416/1271401890


MACの場合は

  1. http://code.google.com/intl/ja/appengine/downloads.html の「GoogleAppEngineLauncher-1.5.4.dmg」をダウンロード、マウントします。
  2. 中にある「GoogleAppEngineLauncher.app」をアプリケーションフォルダに移動
  3. 起動してメニューから「GoogleAppEngineLauncher」ー「Make Symlinks」で「/usr/local/bin」にappcfg.pyのエイリアス?を作成します。
  4. 適当な名前のディレクトリを作成し、その中に「app.yaml」ファイルを作成
  5. 「app.yaml」ファイルの中身はy-kawazさんとこの記事を参照
  6. 「appcfg.py vacuum_indexes 4のディレクトリ」をシェルから打って実行


以上でリンク先と同じように各インデックスのメンテについて聞いてきます。

ありがちなのは、カスタムインデックスが必要なクエリを書いており、ローカルではAutoGenerateのインデックスが効いているのだけれど、自分で定義するインデックス用XMLファイルに記述を写していない場合などです。
(500〜ってなエラーが出ると思います)

そんな場合は、

  1. インデックス削除
  2. カスタムインデックスファイルに記述を追加(Auto〜から移動ですね)
  3. (インデックス一覧からDeletingが消えてから)再度デプロイ

最後の再度デプロイはDeleting中でも一応いけましたが、念のためDeletingが消えてからのデプロイをオススメします。
インデックス削除は上記のケースでひとつだけ消した場合で2〜3分程度で終わりました。