sola's note -7ページ目

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

That user can undo the transaction with "appcfg rollback".

GAE/Jにデプロイが全然出来ない。
最初はメンテなのかなーとスルーしてたけど、
1日経っても出来ないので調べることに。

調べてみると、特定のコマンドを打つ事で解決出来るみたい。

本件の発生条件は
デプロイ中にタイムアウトすることみたいです。

エラー内容は

Initiating update.
java.io.IOException: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=[アプリケーションID]&version=1&
409 Conflict
Another transaction by user [アカウント名] is already in progress for app: [アプリケーションID], version: 1. That user can undo the transaction with "appcfg rollback".


Debugging information may be found in C:\Documents and Settings\[アカウント]\Local Settings\Temp\appengine-deploy7224581504554652125.log

といった感じ。

入力するコマンドは

1.コマンドプロンプトでEclipseのプラグイン内のSDKフォルダでbinを開く。
C:\[Eclipseのパス]\plugins\com.google.appengine.eclipse.sdkbundle.1.4.2_1.4.2.v2
01102111810\appengine-java-sdk-1.4.2\bin>

2.appcfgコマンドを実行する。
...appengine-java-sdk-1.4.2\bin>appcfg.cmd rollback C:\[Eclipseのパス]\workspace\[プロジェクト名]\war

これでOK
作成中のWebサイトのテストをしていたところ
なんかメールが飛んでこない。

最初はメールアドレスのミスかな~とか思ったり、
テストの都合上SenderとToが同じアドレスになっているのが問題かなと思ってたけど

どうも違う。

仕方なくログ出力の設定して、云々かんぬんしてたら

java.lang.IllegalArgumentException: Unauthorized Sender: Unauthorized sender

というのが出た。
GAEではSenderをアプリケーション側で登録(Administration-Permission)
していないといけないんだけど、
Ownerのアドレスだし、StatusはActiveだし、一体どうなってるんだ状態。

検索してみると、ごく一部に同じ症状の人がいるようで、
更に調べてみると

Senderのアドレスにドット「.」が含まれているとNG

というバグが存在する模様。
これは認証方式を新しくしたのが原因のようです。

SDK側の問題なので、Googleさんに委ねるしかないですが
Googleにしては、、、というバグだなぁ。。。

どうでもいいけどテスト中にプラットフォーム側のバグってのは
結構イタダケナイ事件。
なんだか難しい事を書くようだけど

要はメモリリーク

Google App Engin for Javaで
Androidのサイト制作を進めていくにあたって、微調整をしている時
これが頻発(?)するようになった。

java.lang.OutOfMemoryError: PermGen space

Javaでメモリリークなんてあるのかなんて思ってて1回目はスルーしたんだけど
2回目も発生
まあ、再起動で無視できるものなら無視するんだけど
これが発生すると


ローカル環境のデータストアのデータが飛ぶ


んだよね(・ω・`)
アカウント設定とか環境設定とか、諸々し直すと思うと


流石にメンドクサイ


本当はSeleniumで環境設定を自動化しようと思ったんだけど
jQuery多用しすぎなせいか、


Seleniumが効かなくなった


という事態が発生してね。。。orz
環境設定なんて滅多にしないから原因究明は後でいーや
とか思ってたんだけど、今回のメモリリーク。

確認してみると怪しいのはSlim3のHOT reloading機能のよう。
これを有効にしている時に
アプリケーションでリフレクション情報をキャッシュしたりするとダメっぽいらしい。

とか言われても

HOT reloading機能便利だから無効にするなんて選択肢ないな('A`)

追記:
PermGen spaceが起きるとローカルのデータストアデータが飛ぶと書きましたが、
飛ばない時もあるようです。

2回目は確認してみたら飛んでませんでした。