Commit 6fba1c22 authored by Fabio Pitino's avatar Fabio Pitino

Rescue RuntimeError when "too many loops" are reached by Fugit::Cron

parent 9b3b7a58
...@@ -13,7 +13,7 @@ module Gitlab ...@@ -13,7 +13,7 @@ module Gitlab
def next_time_from(time) def next_time_from(time)
@cron_line ||= try_parse_cron(@cron, @cron_timezone) @cron_line ||= try_parse_cron(@cron, @cron_timezone)
@cron_line.next_time(time).utc.in_time_zone(Time.zone) if @cron_line.present? find_next_time(time) if @cron_line.present?
end end
def cron_valid? def cron_valid?
...@@ -49,6 +49,14 @@ module Gitlab ...@@ -49,6 +49,14 @@ module Gitlab
def try_parse_cron(cron, cron_timezone) def try_parse_cron(cron, cron_timezone)
Fugit::Cron.parse("#{cron} #{cron_timezone}") Fugit::Cron.parse("#{cron} #{cron_timezone}")
end 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 end
end end
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