23
12

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 UIのPAUSE/RESUME機能 & Digdag CLIでのenable/disable機能の注意点

Last updated at Posted at 2017-08-04

概要

スケジュール実行が設定されたワークフローを一時停止した後に一時停止を解除すると、今まで実行がスキップされていた分のセッションが一気に実行される。
この挙動が嫌な場合は、一時停止を解除する直前に、digdag rescheduleを実行する必要がある。

再現手順

以下の1分毎にhogeと出力するだけのワークフローをサーバーにpush。

timezone: Asia/Tokyo

schedule:
  minutes_interval>: 1

+echo:
  echo>: hoge

Digdag UIのPAUSEボタンを押して、ワークフローのスケジュール実行を一時停止する。

数分間待つ。

RESUMEボタンを押して、一時停止を解除する。

PAUSE中のセッションが一気に動き出す!!

2017-08-04 11:16:53 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=workflow session_time=2017-08-04T11:13:00+09:00
2017-08-04 11:16:53 +0900 [INFO] (0095@[0:sample]+workflow+echo): echo>: hoge
hoge
2017-08-04 11:16:54 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=workflow session_time=2017-08-04T11:14:00+09:00
2017-08-04 11:16:54 +0900 [INFO] (0095@[0:sample]+workflow+echo): echo>: hoge
hoge
2017-08-04 11:16:55 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=workflow session_time=2017-08-04T11:15:00+09:00
2017-08-04 11:16:55 +0900 [INFO] (0095@[0:sample]+workflow+echo): echo>: hoge
hoge
2017-08-04 11:16:56 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=workflow session_time=2017-08-04T11:16:00+09:00
2017-08-04 11:16:56 +0900 [INFO] (0095@[0:sample]+workflow+echo): echo>: hoge
hoge
2017-08-04 11:17:00 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=workflow session_time=2017-08-04T11:17:00+09:00
2017-08-04 11:17:00 +0900 [INFO] (0095@[0:sample]+workflow+echo): echo>: hoge
hoge

なお、Digdag CLIでdigdag disabledigdag enableを行った時も同様の挙動をします。

回避方法

RESUMEボタンを押す直前にDigdag CLIから以下のコマンドを打つと、この挙動を抑制できます。

digdag reschedule <schedule id> --skip-to "$(date '+%Y-%m-%d %H:%M:%S %z')"

なお、現時点ではこの操作はDigdag UIから行うことができません。

schedule id を取得するにはDigdag CLIから以下のコマンドを打つと、スケジュール一覧を取れるのでそれを使えます。

$ digdag schedules
Schedules:
  id: 4
  project: sample
  workflow: sample
  disabled at: 2019-02-18 11:39:19 +0900 (17h 42m 0s ago)
  next session time: 2019-02-19 05:30:00 +0900
  next scheduled to run at: 2019-02-19 05:30:00 +0900 (in 8m 40s)

  id: 5
  project: sample2
  workflow: sample2
  disabled at: 2019-02-18 11:39:24 +0900 (17h 41m 55s ago)
  next session time: 2019-02-19 00:00:00 +0900
  next scheduled to run at: 2019-02-19 09:00:00 +0900 (in 3h 38m 40s)

一括で reschedule --skip-to をしたい場合は次のようにすると良さそうです。

ids=$(digdag schedules | grep id | awk -F: '{print $2}')
echo "${ids}" | xargs -I{} digdag reschedule {} --skip-to "$(date '+%Y-%m-%d %H:%M:%S %z')"
23
12
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
23
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?