GAEのDataStoreについての質問です

93 views
Skip to first unread message

Tomoaki Oshima

unread,
Nov 29, 2008, 10:15:57 PM11/29/08
to Google-App-Engine-Japan
はじめまして、大島と申します。

「第二回 App Engine Hack-a-thon 」参加に迷っていたら、もう定員に達して
しまったとのこと残念です。

さて、本題ですが、
ローカルのテスト環境では問題なく作動するのですが、
GAE上にアプリケーションをアップロードして作動させると、エラーになります。
調べてみると、DataStore関係で、GQLでデータ取得しているところに問題があるようです。
(根拠:該当箇所をtry ... except するとそれなりに作動するようになったので)

そこで質問なのですが、管理コンソール上(DataStorea Indexes)で確認すると
該当部分のモデルのstatus = Building のままなのです。
他にうまく作動しているモデルは、status = Serving になっています。

ネット上で情報収集すると、index.yaml という自動生成されるファイルを適切に
手動編集して対処・・・のような情報もありようですが、よくわかっていません。

Building..ということはそのうち、Servingに変わるという認識だったのですが、
24時間以上経っても変化ないです。

そのあたり何か、同じ体験をされた方とか、
見るべきページをご存じでしたら、教えて頂けると幸いです。

kimio tanaka

unread,
Nov 29, 2008, 11:19:55 PM11/29/08
to google-app-...@googlegroups.com
> Building..ということはそのうち、Servingに変わるという認識だったのですが、
> 24時間以上経っても変化ないです。
>
> そのあたり何か、同じ体験をされた方とか、
> 見るべきページをご存じでしたら、教えて頂けると幸いです。

同じような体験があります。
確かそのときは後から goole サイドから中途の処理があったので
対応しましたとうい、メールがきたように思います。
自分で
appcfg.py [options] vacuum_indexes <app-directory>
このあたりの処理を行ないました。

参考としてはこのあたりです。
http://code.google.com/appengine/docs/appcfgpy.html
うろ憶えでもうしわけありませんが。参考まで。

kwin/田中



2008/11/30 12:15 Tomoaki Oshima <bl...@osima.jp>:

kimio tanaka

unread,
Nov 30, 2008, 12:40:18 AM11/30/08
to google-app-...@googlegroups.com
対応のメールが見つかりました
index.yaml のバックアップしておいて、問題の index をここから削除して
vacuum_indexes し、 index.yaml  を元に戻して update
する手順となります。
----
To vacuum your indexes:
1. Create a backup of your index.yaml specification
2. Remove the definitions of the indexes in Error from your index.yaml file
3. Run appcfg.py vacuum_indexes your_app_dir/
4. Replace the modified version of your index.yaml file with the original
5. Run appcfg.py update your_app_dir/

After completing these steps, your application's indexes should build
successfully. If your indexes still will not build, it is possible
your index definition will result in an exploding index, and can not
be built. For information on exploding indexes, please see:
http://code.google.com/appengine/docs/datastore/queriesandindexes.html#Big_Entities_and_Exploding_Indexes
---

kwin / 田中

2008/11/30 13:19 kimio tanaka <kwi...@gmail.com>:

Takashi Matsuo

unread,
Nov 30, 2008, 12:53:10 AM11/30/08
to google-app-...@googlegroups.com
大島さん

> 「第二回 App Engine Hack-a-thon 」参加に迷っていたら、もう定員に達して
> しまったとのこと残念です。

参加ご希望でしたら今からでも名簿に追加しますので、その旨メールください。

本題の index についてですが、tanaka-san のおっしゃるやり方をまず試して
みてください。それでもダメな場合は、本家の Group で相談すると Googler
が手動で直してくれるというパターンが何件か見られます。

修復できなかった場合、本家の Group に相談してみると良いでしょう。
app-id を教えていただければ、代理でメールする事もできますのでご相談くだ
さい。

Happy coding :-)

-- Takashi Matsuo



2008/11/30 kimio tanaka <kwi...@gmail.com>:

Tomoaki Oshima

unread,
Nov 30, 2008, 1:53:44 AM11/30/08
to Google-App-Engine-Japan
ありがとうございます。こんなはやくコメント頂けるとは!おどろきです。助かります。
いま試しています。

まだうまくいっていないのですが、
インデックスについて少しは理解が深まってきました。
いままでは(index.yamlが)自動生成されていたので、
インデックスについては、こちらで関与しなくていいもの、くらいに考えていましたが、
いろいろ試していてなんとなくわかってきたような。

管理コンソールのDataViewerで、Query(using GQL)の直接GQL Queryを書いてやれば、
GAE上でどのQueryが失敗しているのかを検証できることにも気づきました。
(ローカル環境と異なる振る舞いになったときにどうデバッグしていいかわからなかったのでこれは収穫です)

取り急ぎお礼まで。

大島

Tomoaki Oshima

unread,
Nov 30, 2008, 2:06:57 AM11/30/08
to Google-App-Engine-Japan
松尾さん

ありがとうございます。
いま確認したところ、手動で設定し直した、インデックス、今度は、Building から Serving に変わりました!
うまくいきそうです。

すべてがうまくいったらまた手順等を投稿するつもりです。
取り急ぎお礼まで。

大島

> 大島さん
>
> > 「第二回 App Engine Hack-a-thon 」参加に迷っていたら、もう定員に達して
> > しまったとのこと残念です。
>
> 参加ご希望でしたら今からでも名簿に追加しますので、その旨メールください。
>
> 本題の index についてですが、tanaka-san のおっしゃるやり方をまず試して
> みてください。それでもダメな場合は、本家の Group で相談すると Googler
> が手動で直してくれるというパターンが何件か見られます。
>
> 修復できなかった場合、本家の Group に相談してみると良いでしょう。
> app-id を教えていただければ、代理でメールする事もできますのでご相談くだ
> さい。
>
> Happy coding :-)
>
> -- Takashi Matsuo
>
> 2008/11/30 kimio tanaka <kwin...@gmail.com>:
>
>
>
> > 対応のメールが見つかりました
> > index.yaml のバックアップしておいて、問題の index をここから削除して
> > vacuum_indexes し、 index.yaml  を元に戻して update
> > する手順となります。
> > ----
> > To vacuum your indexes:
> > 1. Create a backup of your index.yaml specification
> > 2. Remove the definitions of the indexes in Error from your index.yaml file
> > 3. Run appcfg.py vacuum_indexes your_app_dir/
> > 4. Replace the modified version of your index.yaml file with the original
> > 5. Run appcfg.py update your_app_dir/
>
> > After completing these steps, your application's indexes should build
> > successfully. If your indexes still will not build, it is possible
> > your index definition will result in an exploding index, and can not
> > be built. For information on exploding indexes, please see:
> >http://code.google.com/appengine/docs/datastore/queriesandindexes.htm...
> > ---
>
> > kwin / 田中
>
> > 2008/11/30 13:19 kimio tanaka <kwin...@gmail.com>:
> >>> Building..ということはそのうち、Servingに変わるという認識だったのですが、
> >>> 24時間以上経っても変化ないです。
>
> >>> そのあたり何か、同じ体験をされた方とか、
> >>> 見るべきページをご存じでしたら、教えて頂けると幸いです。
>
> >> 同じような体験があります。
> >> 確かそのときは後から goole サイドから中途の処理があったので
> >> 対応しましたとうい、メールがきたように思います。
> >> 自分で
> >> appcfg.py [options] vacuum_indexes <app-directory>
> >> このあたりの処理を行ないました。
>
> >> 参考としてはこのあたりです。
> >>http://code.google.com/appengine/docs/appcfgpy.html
> >> うろ憶えでもうしわけありませんが。参考まで。
>
> >> kwin/田中
>
> >> 2008/11/30 12:15 Tomoaki Oshima <b...@osima.jp>:

Tomoaki Oshima

unread,
Dec 1, 2008, 6:09:08 PM12/1/08
to Google-App-Engine-Japan
田中 さん

ありがとうございました。
インデックスの問題、解決することができました。助かりました。

試行錯誤はあったですが、結論としては、
教えて頂いたとおりで解決できました。

ずっとbuilding ステータスのままのインデックスの問題、解消手順

1. index.yaml から ずっと building ステータスのままのインデックス記述を削除
2. vacuum_indexes を実行
3. 管理コンソールの DataStore - indexes でステータスが deletingになるのを確認
4. 管理コンソールの DataStore - indexes で該当インデックスが完全に削除されまで待つ
5. index.yaml を編集して 1. で削除したインデックス記述を復活
6. update_indexes を実行
7. 管理コンソールの DataStore - indexes でステータスが building になるのを確認→Servingステータスに変
わるまで待つ

ありがとうございました。


> 対応のメールが見つかりました
> index.yaml のバックアップしておいて、問題の index をここから削除して
> vacuum_indexes し、 index.yaml  を元に戻して update
> する手順となります。
> ----
> To vacuum your indexes:
> 1. Create a backup of your index.yaml specification
> 2. Remove the definitions of the indexes in Error from your index.yaml file
> 3. Run appcfg.py vacuum_indexes your_app_dir/
> 4. Replace the modified version of your index.yaml file with the original
> 5. Run appcfg.py update your_app_dir/
>
> After completing these steps, your application's indexes should build
> successfully. If your indexes still will not build, it is possible
> your index definition will result in an exploding index, and can not
> be built. For information on exploding indexes, please see:http://code.google.com/appengine/docs/datastore/queriesandindexes.htm...
> ---
>
> kwin / 田中

kimio tanaka

unread,
Dec 2, 2008, 12:16:51 AM12/2/08
to google-app-...@googlegroups.com
お疲れさまでした。
自分の対応のときは、あたふたしながら作業したので手順が
あいまいでしたが、おかげさまでよくわかりました。

以下に参加しておくと、よいようです。
Google App Engine Downtime Notify
http://groups.google.co.jp/group/google-appengine-downtime-notify?hl=ja

Memcache の調子がおかしかったり、最近だとメンテナンスで
気をつけて put してください、だとかありましたので。

---
You can use Python's try syntax to fail
gracefully on writes like this:
from google.appengine.ext import db
from google.appengine.runtime.apiproxy_errors import
CapabilityDisabledError
myModel = db.Model()
try:
myModel.put()
except CapabilityDisabledError:
# fail gracefully here
pass
---

kwin / 田中

2008/12/02 8:09 Tomoaki Oshima <bl...@osima.jp>:
Reply all
Reply to author
Forward
0 new messages