3

私のアプリケーションは grails 2.3.1 で動作します。数日前、エラー コントローラの奇妙な動作に気付きました。Grails はエラー コントローラを呼び出しますが、request.exception は null です。これは、アプリケーションが grails 2.2.x から 2.3.x に更新され、非同期コントローラーの使用を開始した後に発生したようです。私のコントローラー:

package grailsapp

import static grails.async.Promises.task

class MyController {
    def controllerAction(ActionCommand command) {
        task {
            // Controller code
        }
    }
}

また、コントローラーコードに難しい計算が含まれている場合にのみ発生し、長い時間 (約 30 秒) がかかります。

Grails async なしでコードを実行しようとしましたが、完璧に動作します。また、try\catch を使用してタスク内にコードをラップしようとしましたが、何も変更されていません。catch セクションは何もキャッチしていません。

package grailsapp

import static grails.async.Promises.task

class MyController {
    def controllerAction(ActionCommand command) {
        task {
            try{
                // Controller code              
            } catch (Exception e){
                e.printStackTrace()
                // Nothing caught here
            }
        }
    }
}

アクションメソッド本体全体をラップしようとしましたが、同じ結果です。

package grailsapp

import static grails.async.Promises.task

class MyController {
    def controllerAction(ActionCommand command) {
        try{
            task {
                // Controller code
            }               
        } catch (Exception e){
            e.printStackTrace()
            // Nothing caught here
        }
    }
}

誰かが助けて、なぜそれが起こるのか説明できますか?

4

0 に答える 0