0
0

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 3 years have passed since last update.

4rep - digdag 2回目実行がスキップされる

Posted at

digdag 実行すると

  • 2度目は処理が実行されずスキップされている。
  • セッションの情報は.digdagディレクトリ下に日付がついて保存されている。
  • ここにtask1,task2,task3の実行が成功したという状態が保存されているため、2度目の実行はスキップされる。
  • .digdagに保存される
/work # ls -l .digdag/status/20200121T183000\+0900/
total 32
-rw-r--r--    1 root     root           183 Jan 21 09:47 +mydag+disp_current_date.yml
-rw-r--r--    1 root     root           171 Jan 21 09:47 +mydag+setup.yml
-rw-r--r--    1 root     root           172 Jan 21 10:30 +mydag+setup1.yml
-rw-r--r--    1 root     root           171 Jan 21 10:32 +mydag+step1.yml
-rw-r--r--    1 root     root           171 Jan 21 10:32 +mydag+step2.yml
-rw-r--r--    1 root     root           171 Jan 21 10:32 +mydag+step3.yml
-rw-r--r--    1 root     root           165 Jan 21 10:32 +mydag.yml
-rw-r--r--    1 root     root           179 Jan 21 09:51 +mydag^failure-alert.yml

このまま何度もやるとスキップされる

-- sessionオプション

  • この--sessionのデフォルト値はlast(最後に実行されたセッションを適用)になるため、2回め以降の実行は永久にスキップされてしまう。

--sessionには引数

  • hourly
  • daily
  • last
  • "yyyy-MM-dd"
  • "yyyy-MM-dd HH:flag_mm:SS"
digdag run xxxxx.dig
digdag run xxxxxxxxx.dig --session hourly
/work # digdag run mydag.dig --session hourly
2020-01-21 10:40:47 +0000: Digdag v0.9.41
2020-01-21 10:40:50 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 10:40:50 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 10:40:52 +0000 [INFO] (0017@[0:default]+mydag+step1): echo>: step1
2020-01-21 10:40:52 +0000 [INFO] (0018@[0:default]+mydag+step2): echo>: step2
2020-01-21 10:40:52 +0000 [INFO] (0019@[0:default]+mydag+step3): echo>: step3
step3
step2
step1
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
  • スキップされずにでた

2回目

/work # digdag run mydag.dig --session hourly
2020-01-21 10:40:56 +0000: Digdag v0.9.41
2020-01-21 10:40:59 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 10:40:59 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 10:40:59 +0000 [WARN] (0019@[0:default]+mydag+step3): Skipped
2020-01-21 10:40:59 +0000 [WARN] (0018@[0:default]+mydag+step2): Skipped
2020-01-21 10:40:59 +0000 [WARN] (0017@[0:default]+mydag+step1): Skipped
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
  • スキップされた
  • このセッションは自分で日付指定する事もできる。
  • 例えばmonthlyなセッションを作りたい場合は以下のようにする。
$ digdag run workflow.dig --session "`date '+%Y-%m-01'`"

毎回全てスキップされずに実行する方法

  • 毎回最初から実行したい場合は-a(--rerun)を使う。
/work # digdag run mydag.dig -a
2020-01-21 10:52:22 +0000: Digdag v0.9.41
2020-01-21 10:52:24 +0000 [WARN] (main): Reusing the last session time 2020-01-21T19:00:00+09:00.
2020-01-21 10:52:24 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 10:52:24 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 10:52:26 +0000 [INFO] (0018@[0:default]+mydag+step2): echo>: step2
2020-01-21 10:52:26 +0000 [INFO] (0019@[0:default]+mydag+step3): echo>: step3
2020-01-21 10:52:26 +0000 [INFO] (0017@[0:default]+mydag+step1): echo>: step1
step2
step3
step1
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
  • digdag run mydag.dig --rerun
  • digdag run mydag.dig -a
    のどっちか

-sオプション

  • taskを途中から実行する際には-sを使う。
  • digdag run mydag.dig -s '+{digdag-file-name}+{途中実行させたいステップ}'
/work # digdag run mydag.dig -s '+mydag+step4'
2020-01-21 11:19:05 +0000: Digdag v0.9.41
2020-01-21 11:19:08 +0000 [WARN] (main): Reusing the last session time 2020-01-21T19:00:00+09:00.
2020-01-21 11:19:08 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 11:19:08 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 11:19:08 +0000 [WARN] (0017@[0:default]+mydag+setup1): Skipped
2020-01-21 11:19:08 +0000 [WARN] (0017@[0:default]+mydag+step2): Skipped
2020-01-21 11:19:08 +0000 [WARN] (0017@[0:default]+mydag+step3): Skipped
2020-01-21 11:19:10 +0000 [INFO] (0017@[0:default]+mydag+step4): sh>: ./repeat_hello.sh
 from process 2036
 from process 2036
 from process 2036
 from process 2036
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?