[ 
https://issues.apache.org/jira/browse/AIRFLOW-3422?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16704462#comment-16704462
 ] 

Till Heistermann commented on AIRFLOW-3422:
-------------------------------------------

The problem exists on "US/Eastern" and "Europe/Berlin" as well. So it likely 
affects many / all timezones with DST.

Pendulum version is 1.4.4 (outdated, but pinned by airflow like this), pytz is 
at 2018.7 

Interestingly, the pendulum docs advise against using the timezone library in 
python < 3.6 
[https://pendulum.eustace.io/docs/#using-the-timezone-library-directly] due to 
workarounds they had to implement for earlier python versions. So I fear we are 
relying on non-documented behavior for the airflow code to work on 3.5 in the 
first places. We should definitely add testing for airflow 3.6 to the travis 
pipeline as well so this won't pop up again c.f. AIRFLOW-2973

> Infinite loops during springtime DST transitions on python 3.6
> --------------------------------------------------------------
>
>                 Key: AIRFLOW-3422
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-3422
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: scheduler
>    Affects Versions: 1.10.1
>            Reporter: Till Heistermann
>            Priority: Major
>
> Automatic DST transitions can cause dags to be stuck in an infinite loop, if 
> they happen to be scheduled in the "skipped" hour during a springtime DST 
> transition. 
> The fix introduced in https://issues.apache.org/jira/browse/AIRFLOW-3277 does 
> not seem to work for python 3.6, only for 3.5 and 2.7.
> Example to reproduce (current master, python 3.6):
> {code:java}
> import pendulum
> from datetime import datetime
> from airflow.utils.timezone import make_aware
> from airflow.models import DAG
> nsw = pendulum.Timezone.load("Australia/Sydney")
> dt = make_aware(datetime(2018, 10, 3, 2, 30), nsw)
> dag = DAG("id", schedule_interval="30 2 * * *", start_date=dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> dt = dag.following_schedule(dt); print(dt)
> {code}
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to