Scheduled pipelines throw TZInfo::AmbiguousTime with cron jobs scheduled after 2020-11-01

Summary

The present version of Fugit (v1.2.1) throws and exception when trying to calculate the next_time for a once-a-year cron if it is out more than 11 months, which is the case once it has run.

If such a cron is used in a pipeline schedule, it breaks the schedule run preventing all schedules after it in the iteration from running.

Steps to reproduce

Using gitlab-rails c or similarly using Fugit v1.2.1 (the current version in GitLab):

Fugit::VERSION
=> "1.2.1"

Fugit::Cron.new('7 12 30 9 *').next_time(Time.now)
=> #<EtOrbi::EoTime:0x00007fa8ab5d8850 @seconds=1601485620.0, @zone=#<TZInfo::DataTimezone: America/Chicago>, @time=nil>

Fugit::Cron.new('7 12 1 10 *').next_time(Time.now)
Traceback (most recent call last):
        1: from (irb):238
TZInfo::AmbiguousTime (Time: 2020-11-01 01:00:00 UTC is an ambiguous local time.)

What is the current bug behavior?

Throws an exception.

Note that the error referring to TZInfo::AmbiguousTime is a red herring and irrelevant.

What is the expected correct behavior?

Return a valid EtOrbi::EoTime.

Possible fixes

The latest version of Fugit (v3.1.3) does not have this bug. Suggest upgrading GitLab to use this version.

Edited Jan 08, 2020 by Stan Hu
Assignee Loading
Time tracking Loading