Windows Azure でデプロイするとぐるぐる祭りになることは非常によくあることだと思います。
というわけで今日はぐるぐる祭りの嵌りどころなどを少し。
OnStartで起動時の処理に失敗したりしてFalseを返すと再試行されます。このときStartup Taskなども再度走りますので、リトライが考えられてないと変なことになってしまいます。
※StartupTaskで嵌った場合はそもそもOnStartまで来なかったりしますけど(Simpleの場合)
※1回しか走らない想定のアプリケーションのインストール処理とかが該当するかと
ちなみにローカルPCのCompute Emulatorでデバッグ実行などを行うとデバッガが終わって再試行されないので気付きにくいですね。但し、CSRunコマンドから実行した場合はちゃんとエミュレートしてくれます。
OnStartが繰り返し呼ばれてるのがわかるかと思います。
そんなわけでOnStartのエラー処理はちゃんと考えて適切にしましょう。ただ変なまま起動するのがいいのか、このケースみたいにずっとビジーがいいのかは要件次第ですね。(というあたりが難しいところ)
あと、Windows Azureの管理ポータルで表示されるインスタンスのメニューですが、「再起動」はOSの再起動じゃなくて配置をもう一度最初からする的な意味の再起動です。
つまりStartup Taskも走ればOnStartも走るということで。OS上の再起動とは異なるので注意。
※エラートラップちゃんとしてなくて安易にやられるとOnStartでFalseかえってぐるぐる祭り開催!になります。
対処方法としては「初期状態にリセット」でReImageするとかですね。。
という感じで今日は自分が嵌った点をお伝えしました。とほほ。
※ぐるぐる祭りとは
ビジーやAbortのままReady状態にならない時の管理ポータルの見た目(アイコン)の事
例:
こんな感じでぐるぐる繰り返します。。。切ない。