データベース移行プラグインを使用する Heroku でホストされている Grails アプリケーションがあります。アプリケーションを再起動すると、ヘルプ メッセージが表示されずに起動が停止することがあります。
2012-11-12T11:21:06+00:00 app[web.1]: Configuring Spring Security Core ...
2012-11-12T11:21:06+00:00 app[web.1]: ... finished configuring Spring Security Core
2012-11-12T11:21:06+00:00 app[web.1]:
2012-11-12T11:21:22+00:00 heroku[web.1]: Stopping process with SIGKILL
2012-11-12T11:21:22+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2012-11-12T11:21:24+00:00 heroku[web.1]: Process exited with status 137
2012-11-12T11:21:34+00:00 heroku[router]: Error H20 (App boot timeout) -> GET abc.herokuapp.com/ dyno= queue= wait=75000ms service= status=503 bytes=
2012-11-12T11:22:34+00:00 heroku[router]: Error H20 (App boot timeout) -> GET abc.herokuapp.com/ dyno= queue= wait=75000ms service= status=503 bytes=
2012-11-12T11:25:10+00:00 heroku[router]: Error H10 (App crashed) -> GET abc.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
調査の結果、DATABASECHANGELOGLOCK テーブルに列 LOCKED=TRUE のレコードがあったため、これが発生していることを発見しました。手動で LOCKED 値を FALSE に設定してアプリケーションを再起動すると、起動プロセスは問題なく完了します。
私の質問は次のとおりです。
- データベースの変更ログがロックされたままになっているものを見つける方法と、それを回避する方法を教えてください。
- ロックを回避できない場合、スタックする前にアプリケーションの起動プロセスのロックを解除する方法はありますか?