From 27f2873ebd0dd427663f248b982fde69b09954a5 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Mon, 12 Sep 2022 13:51:03 -0700 Subject: [PATCH] special case for year ranges --- service/worker/scheduler/calendar.go | 16 +++++++++++++--- service/worker/scheduler/calendar_test.go | 21 +++++++++------------ service/worker/scheduler/spec_test.go | 1 - 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/service/worker/scheduler/calendar.go b/service/worker/scheduler/calendar.go index a98625e7c6b3..5e007b461d85 100644 --- a/service/worker/scheduler/calendar.go +++ b/service/worker/scheduler/calendar.go @@ -60,6 +60,8 @@ const ( const ( // Modes for parsing range strings: all modes accept decimal integers parseModeInt parseMode = iota + // parseModeYear is like parseModeInt but returns an empty range for the default + parseModeYear // parseModeMonth also accepts month name prefixes (at least three letters) parseModeMonth // parseModeDow also accepts day-of-week prefixes (at least two letters) @@ -100,7 +102,7 @@ var ( func newCompiledCalendar(cal *schedpb.StructuredCalendarSpec, tz *time.Location) (*compiledCalendar, error) { cc := &compiledCalendar{tz: tz} var err error - if cc.year, err = makeSliceMatcher(cal.Year); err != nil { + if cc.year, err = makeYearMatcher(cal.Year); err != nil { return nil, err } else if cc.month, err = makeBitMatcher(cal.Month); err != nil { return nil, err @@ -242,7 +244,7 @@ Outer: func parseCalendarToStrucured(cal *schedpb.CalendarSpec) (*schedpb.StructuredCalendarSpec, error) { ss := &schedpb.StructuredCalendarSpec{Comment: cal.Comment} var err error - if ss.Year, err = makeRange(cal.Year, "*", minCalendarYear, maxCalendarYear, parseModeInt); err != nil { + if ss.Year, err = makeRange(cal.Year, "*", 0, 1e6, parseModeYear); err != nil { return nil, err } else if ss.Month, err = makeRange(cal.Month, "*", 1, 12, parseModeMonth); err != nil { return nil, err @@ -358,7 +360,12 @@ func makeBitMatcher(ranges []*schedpb.Range) (func(int) bool, error) { return func(v int) bool { return (1<