【現象】
実行中の非同期タスクの情報がデータベースとAPサーバで不整合が起きた場合にタスクが実行中のままとなる場合があります。
直列キューでこの状態に陥ると、後続のタスクが一切実行されなくなります。
【条件】
以下のすべてに該当する場合に発生します。
・2015 Spring以降を利用している
・以下のような理由でタスク実行中に実行プロセスが存在しなくなった場合
・OSのシャットダウン
・OS経由のプロセス終了命令
・その他、正規の手段以外でのアプリケーション停止
【対応方法(2016 Springまで)】
タスク詳細画面にてタスクを終了しようした場合に以下のエラーメッセージが表示され、正常に終了することができません。
「タスクが存在しませんでした。既に処理が終了している可能性があります。」
この場合、システムデータベースを直接操作して対応してください。
update im_async_task_info
set status = 'wait'
where message_id = '{message_id}'
and status = 'processing'
{message_id}は処理中のままとなっているタスクのタスクメッセージIDを指定してください。
処理中だったタスクが再度キューの先頭に再登録され、再実行されることになります。
再実行が終わると、順次待機中のタスクが実行されていきます。
【対応方法(2016 Summer以降)】
タスク詳細画面にて該当タスクを終了してください。
以下の警告メッセージが表示されますが、タスクを終了することが可能です。
「タスクが存在しませんでした。既に処理が終了している可能性があります。」
再実行が必要な場合は、「キューの先頭に再登録」を「する」に指定してください。
-- 対象 -----------------------------------------------------------------------
iAP/Accel Platform/全アップデート
--------------------------------------------------------------------------------
FAQID:568
実行中の非同期タスクの情報がデータベースとAPサーバで不整合が起きた場合にタスクが実行中のままとなる場合があります。