From c75b8ad4dadfa8f9676e0339e06408af3281f512 Mon Sep 17 00:00:00 2001 From: Fabio Pitino <fpitino@gitlab.com> Date: Tue, 7 May 2019 07:52:53 +0100 Subject: [PATCH] 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 --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- lib/gitlab/ci/cron_parser.rb | 10 +--------- spec/lib/gitlab/ci/cron_parser_spec.rb | 7 ------- 4 files changed, 6 insertions(+), 21 deletions(-) diff --git a/Gemfile b/Gemfile index 1282ff0e20d35..a21f9f19458f3 100644 --- a/Gemfile +++ b/Gemfile @@ -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' diff --git a/Gemfile.lock b/Gemfile.lock index 9b1a036030a8c..9522f8fa9e0ae 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) diff --git a/lib/gitlab/ci/cron_parser.rb b/lib/gitlab/ci/cron_parser.rb index ae524654b7d56..94f4a4e36c9c4 100644 --- a/lib/gitlab/ci/cron_parser.rb +++ b/lib/gitlab/ci/cron_parser.rb @@ -13,7 +13,7 @@ def initialize(cron, cron_timezone = 'UTC') 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 @@ def timezone_name(timezone) 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 diff --git a/spec/lib/gitlab/ci/cron_parser_spec.rb b/spec/lib/gitlab/ci/cron_parser_spec.rb index a228334d53e99..491e3fba9d9cc 100644 --- a/spec/lib/gitlab/ci/cron_parser_spec.rb +++ b/spec/lib/gitlab/ci/cron_parser_spec.rb @@ -181,13 +181,6 @@ 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 -- GitLab