digdag sla/fail/error/wait에 대한 메모

3457 단어 TreasureDatadigdag
digdag (정확하게는 TreasureData Workflow)의 sla 파라미터로 약간 빠졌기 때문에 메모.

sla란?



문서 와 같지만, 일정 시간이 지나거나 지정된 시간을 초과한 경우에 경고를 날릴 수 있습니다.

여기도 문서에 기재되어 있습니다만, fail: 옵션으로 workflow 를 실패로 할 수가 있습니다.
* sla: parameter supports duration: HH:MM:SS syntax in addition to time: HH:MM:SS syntax.
* sla: parameter supports fail: BOOLEAN and alert: BOOLEAN options. Setting fail: true makes the workflow failed. Setting alert: true sends an notification using above notification mechanism.

실제로 해보자



내가 빠져 포인트를 알기 쉽도록 실제로 움직여 보겠습니다.

다음과 같은 워크플로를 정의합니다.
내용으로서는 td_wait_table> 로 테이블을 기다리는 것 뿐입니다.
SLA는 10초로 설정되어 있으며 fail: false 입니다.
수동으로 워크플로를 실행한 후 10초 후에 대상 테이블을 만들었습니다.

sample.dig
sla:
  duration: 00:00:10
  fail: false
  alert: false
  +notice:
    echo>: sla alert!!

+wait:
  td_wait_table>: tdwf_wait

_error:
  echo>: error!!

실행 결과



10초 이상 경과했기 때문에, +notice 로 정의한 내용이 실행되고 있습니다.
SLA가 초과되었지만 테이블이 작성되었으므로 성공적으로 종료되었습니다.

그런 다음 fail: true 와 같은 방법으로 실행해 보겠습니다.

실행 결과





마찬가지로, 10초 이상 경과했기 때문에, +notice 로 정의한 내용이 실행되고 있습니다.
SLA가 초과되었지만 태스크는 계속 실행되고 테이블을 작성할 때 td_wait_table이 정상 종료로 끝나지만 이 태스크 자체의 상태는 실패합니다.
그 때문에, _error 로 정의한 내용도 실행되고 있는 것을 알 수 있습니다.

개인적으로 착각하고 있던 점으로서 fail: true 로 하면(자) SLA를 넘은 시점에서 종료한다고 생각했습니다만, 그렇지 않습니다.

그런 다음 테이블을 만들지 않고 도중에 취소 (kill) 해보십시오.
취소는 td_wait_table이나 s3_wait에서 24시간 이상 기다려도 존재하지 않는 경우에 발생합니다.

실행 결과





작업의 상태 자체가 취소되었으므로 실패합니다.
여기서 주목하고 싶은 것은 _error 로 정의한 내용이 실행되지 않는다고 하는 것입니다.

지정한 SLA를 초과한 경우는 +notice 로 정의한 내용을 실행할 수 있습니다만, wait의 태스크로 24시간을 넘어도 대상이 존재하지 않는 경우는 주의입니다.

요약


  • fail: true 작업이 중단되지는 않습니다
  • 대기 작업에서 24 시간을 초과하면 취소되고 오류 처리를 수행 할 수 없습니다.
    fail: true 의 유스 케이스는 있을까. .

    비고


  • TD workflow 0.9.13에서 실행
  • 좋은 웹페이지 즐겨찾기