Commit c75b8ad4 authored by Fabio Pitino's avatar Fabio Pitino

Remove workaround by upgrading Fugit gem

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/58241
* Upgrade Fugit gem to 1.2.1 which recognizes cron expressions
for invalid days
* Reverted previously implemented workaround
* Leave test case which previously exposed the bug
parent 673ea5d2
......@@ -166,7 +166,7 @@ gem 'redis-namespace', '~> 1.6.0'
gem 'gitlab-sidekiq-fetcher', '~> 0.4.0', require: 'sidekiq-reliable-fetch'
# Cron Parser
gem 'fugit', '~> 1.1'
gem 'fugit', '~> 1.2.1'
# HTTP requests
gem 'httparty', '~> 0.16.4'
......
......@@ -190,7 +190,7 @@ GEM
equalizer (0.0.11)
erubi (1.8.0)
escape_utils (1.2.1)
et-orbi (1.1.7)
et-orbi (1.2.1)
tzinfo
eventmachine (1.2.7)
excon (0.62.0)
......@@ -264,8 +264,8 @@ GEM
foreman (0.84.0)
thor (~> 0.19.1)
formatador (0.2.5)
fugit (1.1.9)
et-orbi (~> 1.1, >= 1.1.7)
fugit (1.2.1)
et-orbi (~> 1.1, >= 1.1.8)
raabro (~> 1.1)
fuubar (2.2.0)
rspec-core (~> 3.0)
......@@ -1056,7 +1056,7 @@ DEPENDENCIES
fog-rackspace (~> 0.1.1)
font-awesome-rails (~> 4.7)
foreman (~> 0.84.0)
fugit (~> 1.1)
fugit (~> 1.2.1)
fuubar (~> 2.2.0)
gemojione (~> 3.3)
gettext (~> 3.2.2)
......
......@@ -13,7 +13,7 @@ module Gitlab
def next_time_from(time)
@cron_line ||= try_parse_cron(@cron, @cron_timezone)
find_next_time(time) if @cron_line.present?
@cron_line.next_time(time).utc.in_time_zone(Time.zone) if @cron_line.present?
end
def cron_valid?
......@@ -49,14 +49,6 @@ module Gitlab
def try_parse_cron(cron, cron_timezone)
Fugit::Cron.parse("#{cron} #{cron_timezone}")
end
def find_next_time(time)
@cron_line.next_time(time).utc.in_time_zone(Time.zone)
rescue RuntimeError => error
raise error unless error.message =~ /too many loops/
# Fugit::Cron raises a RuntimeError if :next_time does not find the next schedule
# given an invalid pattern - E.g. try_parse_cron('0 12 31 2 *')
end
end
end
end
......@@ -181,13 +181,6 @@ describe Gitlab::Ci::CronParser do
it { expect(subject).to be_nil }
end
context 'when cron is scheduled to a non existent day' do
let(:cron) { '0 12 31 2 *' }
let(:cron_timezone) { 'UTC' }
it { expect(subject).to be_nil }
end
end
describe '#cron_valid?' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment