タスクがアボートされた場合
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
tomato
投稿数: 27
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
初歩的でいまさらな質問ですが教えてください。
以下のようなタスクがあります。親タスクが 子タスクAや孫タスクAがアボート(レコードロックの解除待ちのリトライ時間が過ぎたなど)されたことを知る仕組みはありますか?
親タスク(P=物理、N=なし、N=なし、A=アボート)
┣子タスクA(P=物理、T=タスク前の前、I=即時、A=アボート)
┃ ┗孫タスクA(P=物理、T=タスク前の前、I=即時、A=アボート)
┗子タスクB(P=物理、T=タスク前の前、I=即時、A=アボート)
子タスクAが失敗しても子タスクBに処理が進んでしまいますので、子タスクAのタスク後で処理成功フラグをTrueすることで子タスクBに進んでよいか判定するしかないでしょうか。訳があって子タスクAと子タスクBは別トランザクションでないといけません。
恥ずかしい話、magicを20年近く触っているのに、孫がこけても親タスクまでアボートされると思っていました。子タスクBに処理がいかないように改修していこうとしているところです。。。
よろしくお願いします。
以下のようなタスクがあります。親タスクが 子タスクAや孫タスクAがアボート(レコードロックの解除待ちのリトライ時間が過ぎたなど)されたことを知る仕組みはありますか?
親タスク(P=物理、N=なし、N=なし、A=アボート)
┣子タスクA(P=物理、T=タスク前の前、I=即時、A=アボート)
┃ ┗孫タスクA(P=物理、T=タスク前の前、I=即時、A=アボート)
┗子タスクB(P=物理、T=タスク前の前、I=即時、A=アボート)
子タスクAが失敗しても子タスクBに処理が進んでしまいますので、子タスクAのタスク後で処理成功フラグをTrueすることで子タスクBに進んでよいか判定するしかないでしょうか。訳があって子タスクAと子タスクBは別トランザクションでないといけません。
恥ずかしい話、magicを20年近く触っているのに、孫がこけても親タスクまでアボートされると思っていました。子タスクBに処理がいかないように改修していこうとしているところです。。。
よろしくお願いします。
投票数:1
平均点:10.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
Magicがこけた、Windowsがこけた という事ではないという事なのでしょうね。
子タスクA に
イベント イベントタイプ R=エラー スコープ=サブツリー
を定義して、親タスクに配置した エラー変数に値をセット
なんていうのはいかがでしょうか?
という私もこれでいいのか自信ありません。
あとそれにプラスして
Rollbackも実行してもいいのかもしれないですね。
子タスクA に
イベント イベントタイプ R=エラー スコープ=サブツリー
を定義して、親タスクに配置した エラー変数に値をセット
なんていうのはいかがでしょうか?
という私もこれでいいのか自信ありません。
あとそれにプラスして
Rollbackも実行してもいいのかもしれないですね。
投票数:0
平均点:0.00