본문 바로가기
카테고리 없음

[Airflow] dependency 'Execution Date' FAILED 오류

by 쿡노트 2024. 1. 25.
반응형

Airflow (워크플로 관리 플랫폼) 3대 서버로 구성을 했고, DAG를 실행시키는데, DAG에는 약 30개의 Task가 존재한다.(각 서버별로 TASK 분할되어 동작)
30개의 TASK 중에 일부는 성공하고, 일부 실패해서, DAG가 수행 실패되었다.
실패된 TASK의 로그 확인 결과 dependency 'Execution Date' FAILED 오류가 발생했다.

TASK 오류 로그

[2024-01-24T14:38:53.292+0900] {taskinstance.py:1155} INFO - Dependencies not met for , dependency 'Execution Date' FAILED: Execution date 2024-01-24T05:42:00+00:00 is in the future (the current date is 2024-01-24T05:38:53.292082+00:00).</taskinstance: dag명.task명 scheduled__2024-01-24t05:42:00+00:00 [queued]>
[2024-01-24T14:38:53.302+0900] {local_task_job.py:103} INFO - Task is not able to be run

원인은 단순한데, Airflow를 설치한 3대의 서버 중 한대의 서버시간이 현재 시간과 맞지 않아서 이다.

서버시간이 현재와 틀어진(현재시간과 다른) 서버에서 동작한 Task가 위와 같은 오류가 나면서 실패했다.

 

서버시간을 맞춰 주면 정상 동작한다. 

 

[airflow@server1 ~]$ date
Wed Jan 24 15:27:38 KST 2024
[airflow@server1 ~]$ sudo date -s "2024-01-24 15:33:00"
Wed Jan 24 15:33:00 KST 2024
[airflow@server1 ~]$ date
Wed Jan 24 15:33:02 KST 2024

리눅스 서버의 Timezone은 KST로 맞췄는데, 현재 시간과 약 4분 (4분 전) 틀어져서, 수동으로 서버 시간을 조정하니 TASK가 오류 없이 정상 동작한다.

 

#Timezone(KST) 변경 방법

https://engineer-1.tistory.com/entry/Linux-%EC%84%9C%EB%B2%84%EC%8B%9C%EA%B0%84-KST%EB%A1%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EC%8B%9C%EA%B0%84-%EC%84%A4%EC%A0%95

 

서버시간이 상이한 서버에서 동작한 TASK가 에러 나며, 에러 로그도 해당 서버에 존재한다.

Execution Date?

Execution Date (=logical date) DAG가 실제 실행 되는 시간이 아니라 데이터 간격의 시작을 나타낸다고 한다.
예를 들어, 1분 주기로 스케쥴링되는 DAG가 있다고 하면 (업무에서는 주로 시간단위, 일단위 주기를 사용) 아래 이미지처럼 Logical Date(=Execution Date) : 7시 20분 Start Date : 7시 21분으로 1분 차이가 나게 된다.  


5분 주기의 DAG는 아래처럼 확인할 수 있다.
Start Date : 7시 00분 
Logical Date(=Execution Date) : 6시 55분


Execution Date 오류와 관련된 상세 내역을 보면, (1분 주기의 DAG)

서버시간이(5:38:53) TASK의 Execution date(5:42:00)에 도달하지 않아(서버시간이 Execution date보다 과거) dependency 'Execution date' 미충족으로 TASK가 실패했다. Start Date(5:43:00)

Dependencies not met for , dependency 'Execution Date' FAILED: Execution date 2024-01-24T05:42:00+00:00 is in the future (the current date is 2024-01-24T05:38:53.292082+00:00).</taskinstance: dag명.task명 scheduled__2024-01-24t05:42:00+00:00 [queued]>

 

감사합니다.

반응형