久しぶりにGoogle Code にあった Appengine のドキュメント達を見ようとしたら、Google Developer の方にリダイレクトされました。

引越しは着々と進んでいるようですね。

今更ですが、メンテナンス対策メモ。

定期メンテナンス中の機能の維持 – Google App Engine — Google Developers

Datastoreが読み取りモードになった時に無様なエラー画面にならない様に、Datastoreの put とかは com.google.apphosting.api.ApiProxy.CapabilityDisabledException をcatchましょう、という事です。

上記以外にも色々スローされるので、運用としては発生したらエラー制御を追加していく感じになりましょうか。

GAE/Jで運用中に発生する例外(と一部対処法) : CB NANASHI管理人ブログ

Memcache も メンテ中の put とかは com.google.appengine.api.memcache.MemcacheServiceException がスローされるんでcatchしてね、との事です。

特にMemcacheはメンテナンス以外でも結構な頻度でおかしくなるんで、私は不精して put に限らず get も無条件で try 〜 cache でくくってます。

それが正しい作法かどうか疑問ですしもうちょっとスマートな方法があるのかも知れませんが、ユーザ影響は避けたいんで。

私の環境でたまにあるのがget時の com.google.appengine.api.memcache.InvalidValueException なんですが、コレはアプリケーション側のバグの可能性が高いんですが、起こり得ると言う意味ではcatchした方がいいと思うです。