13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

digdagでエラーを無視して後続タスクを進める

Posted at

概要

digdagでワークフローを作成する場合に、
親ワークフローから子ワークフローを呼び出すようなケースはよくあると思います。

普通に実装すると、以下のようにcallオペレータを使うと思います。

parent.dig
+task1:
  call>: child1

+task2:
  call>: child2

+task3:
  call>: child3

ただ、この場合途中でエラーが起こった場合に最後まで実行されないことになる。
task間の依存関係が無い場合にどこかで失敗した場合も最後まで実行したい、
そんなケースの場合はrequireオペレータを使うと良い。

requireオペレータを使う

requireオペレータだとignore_failureというオプションがあり、
呼び出したワークフローが失敗しても親ワークフロー内ではエラーにならない。

parent.dig
+task1:
  require>: child1
  ignore_failure: true

+task2:
  require>: child2
  ignore_failure: true

+task3:
  require>: child3
  ignore_failure: true

上記のようにしておくと例えばtask2で呼び出すchild2が失敗した場合もtask3まで実行され、
親ワークフローとしては全タスクがSuccessのステータスで完了します。

エラー検知したい場合は子タスクの中で_errorとかで検知する必要があるので注意が必要ですが、
リカバリは子タスクのみ再実行すればよいので保守性が高まる気がします。

13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?