Catchup
https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dag-run.html#catchup
Apache Airflow에서 catchup 옵션은 DAG(Directed Acyclic Graph)가 실행되지 않는 기간 동안 발생한 task instance를 backfill 또는 누락되거나 건너뛴 task instance를 catchup 할지 여부를 결정합니다.

catchup = False
catchup = True
- scheduler가 마지막 data interval 이후로 실행되지 않거나 지워진 모든 interval를 탐색하여 재실행합니다.
trouble shooting

제가 backfill 외에 catchup을 사용하려고 했던 dag는 위와 같이 catchup tasks가 scheduled tasks 사이에 존재하는 경우였습니다.
- 예상한 시나리오
- (missed or skiped) tasks를 탐색하여 catchup 해줄 것을 기대.
- 실제
- 마지막으로 실행된 data interval이 catchup할 task보다 뒤에 존재하므로 current_date 이후 task에 대해서만 스케쥴링 함.
- 해결
- (missed or skiped) task 중, 최초 data interval에 대해 manual하게 실행하여 마지막 data interval을 원하는 위치로 조정.
best practices
catchup 옵션을 true로 설정하기 전에 주의해야하는 포인트 몇가지를 간략하게 정리합니다.
start_date와 schedule_interval을 올바르게 설정했는지 확인해야 합니다.
- date range가 크거나 data interval이 작은 경우에는 catchup 프로세스에 시간이 오래 걸리고 Airflow 시스템 속도가 느려질 수 있습니다.
- Task dependencies를 확인해야 합니다.
- 다른 task에 dependancy가 있는지 airflow는 체크해주지 않으므로, 현재의 dag와 dependancy가 있는 task를 확인해야 합니다.
- idempotent(멱등성)을 보장하는 task인지 확인해야 합니다.
- 언제 실행하더라도 같은 결과를 가져오는 task가 아니라면, catchup tasks에서 side effects를 발생할 수 있습니다.