2017-10-23 18:53 UTC

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0012966CentOS-7perl-DateTimepublic2017-03-28 16:05
Reportermjakusch 
PrioritynormalSeveritymajorReproducibilityalways
StatusnewResolutionopen 
Product Version7.3.1611 
Target VersionFixed in Version 
Summary0012966: DateTime::Set->from_recurrence() erroneously returns empty set in particular cases
DescriptionThe following call of DateTime::Set->from_recurrence() returns an empty set for particular combinations of $dt_start and $dt_end:

my $ds = DateTime::Set->from_recurrence(
    recurrence => sub {
        return $_[0]->add( weeks => 1 );
    },
    span => DateTime::Span -> from_datetimes (
        start => $dt_start,
        end => $dt_end
    )
) ;

See additional information for examples of such input combinations.
Steps To ReproduceRun attached script. Stdout will contain the start/end dates triggering the bug (see additional information).
Additional InformationOutput of debug_DTS.pl:
==================================================================
empty set for span [ Mon 2017-03-06 CET | Mon 2017-03-06 CET ]
empty set for span [ Mon 2017-03-06 CET | Tue 2017-03-07 CET ]
empty set for span [ Mon 2017-03-06 CET | Wed 2017-03-08 CET ]
empty set for span [ Mon 2017-03-06 CET | Thu 2017-03-09 CET ]
empty set for span [ Mon 2017-03-06 CET | Fri 2017-03-10 CET ]
empty set for span [ Mon 2017-03-06 CET | Sat 2017-03-11 CET ]
empty set for span [ Mon 2017-03-06 CET | Sun 2017-03-12 CET ]
empty set for span [ Mon 2017-10-09 CEST | Mon 2017-10-09 CEST ]
empty set for span [ Mon 2017-10-09 CEST | Tue 2017-10-10 CEST ]
empty set for span [ Mon 2017-10-09 CEST | Wed 2017-10-11 CEST ]
empty set for span [ Mon 2017-10-09 CEST | Thu 2017-10-12 CEST ]
empty set for span [ Mon 2017-10-09 CEST | Fri 2017-10-13 CEST ]
empty set for span [ Mon 2017-10-09 CEST | Sat 2017-10-14 CEST ]
empty set for span [ Mon 2017-10-09 CEST | Sun 2017-10-15 CEST ]
empty set for span [ Mon 2018-03-05 CET | Mon 2018-03-05 CET ]
empty set for span [ Mon 2018-03-05 CET | Tue 2018-03-06 CET ]
empty set for span [ Mon 2018-03-05 CET | Wed 2018-03-07 CET ]
empty set for span [ Mon 2018-03-05 CET | Thu 2018-03-08 CET ]
empty set for span [ Mon 2018-03-05 CET | Fri 2018-03-09 CET ]
empty set for span [ Mon 2018-03-05 CET | Sat 2018-03-10 CET ]
empty set for span [ Mon 2018-03-05 CET | Sun 2018-03-11 CET ]
empty set for span [ Mon 2018-10-08 CEST | Mon 2018-10-08 CEST ]
empty set for span [ Mon 2018-10-08 CEST | Tue 2018-10-09 CEST ]
empty set for span [ Mon 2018-10-08 CEST | Wed 2018-10-10 CEST ]
empty set for span [ Mon 2018-10-08 CEST | Thu 2018-10-11 CEST ]
empty set for span [ Mon 2018-10-08 CEST | Fri 2018-10-12 CEST ]
empty set for span [ Mon 2018-10-08 CEST | Sat 2018-10-13 CEST ]
empty set for span [ Mon 2018-10-08 CEST | Sun 2018-10-14 CEST ]
empty set for span [ Mon 2019-03-11 CET | Mon 2019-03-11 CET ]
empty set for span [ Mon 2019-03-11 CET | Tue 2019-03-12 CET ]
empty set for span [ Mon 2019-03-11 CET | Wed 2019-03-13 CET ]
empty set for span [ Mon 2019-03-11 CET | Thu 2019-03-14 CET ]
empty set for span [ Mon 2019-03-11 CET | Fri 2019-03-15 CET ]
empty set for span [ Mon 2019-03-11 CET | Sat 2019-03-16 CET ]
empty set for span [ Mon 2019-03-11 CET | Sun 2019-03-17 CET ]
empty set for span [ Mon 2019-10-07 CEST | Mon 2019-10-07 CEST ]
empty set for span [ Mon 2019-10-07 CEST | Tue 2019-10-08 CEST ]
empty set for span [ Mon 2019-10-07 CEST | Wed 2019-10-09 CEST ]
empty set for span [ Mon 2019-10-07 CEST | Thu 2019-10-10 CEST ]
empty set for span [ Mon 2019-10-07 CEST | Fri 2019-10-11 CEST ]
empty set for span [ Mon 2019-10-07 CEST | Sat 2019-10-12 CEST ]
empty set for span [ Mon 2019-10-07 CEST | Sun 2019-10-13 CEST ]
empty set for span [ Mon 2020-03-09 CET | Mon 2020-03-09 CET ]
empty set for span [ Mon 2020-03-09 CET | Tue 2020-03-10 CET ]
empty set for span [ Mon 2020-03-09 CET | Wed 2020-03-11 CET ]
empty set for span [ Mon 2020-03-09 CET | Thu 2020-03-12 CET ]
empty set for span [ Mon 2020-03-09 CET | Fri 2020-03-13 CET ]
empty set for span [ Mon 2020-03-09 CET | Sat 2020-03-14 CET ]
empty set for span [ Mon 2020-03-09 CET | Sun 2020-03-15 CET ]
empty set for span [ Mon 2020-10-05 CEST | Mon 2020-10-05 CEST ]
empty set for span [ Mon 2020-10-05 CEST | Tue 2020-10-06 CEST ]
empty set for span [ Mon 2020-10-05 CEST | Wed 2020-10-07 CEST ]
empty set for span [ Mon 2020-10-05 CEST | Thu 2020-10-08 CEST ]
empty set for span [ Mon 2020-10-05 CEST | Fri 2020-10-09 CEST ]
empty set for span [ Mon 2020-10-05 CEST | Sat 2020-10-10 CEST ]
empty set for span [ Mon 2020-10-05 CEST | Sun 2020-10-11 CEST ]
empty set for span [ Mon 2021-03-08 CET | Mon 2021-03-08 CET ]
empty set for span [ Mon 2021-03-08 CET | Tue 2021-03-09 CET ]
empty set for span [ Mon 2021-03-08 CET | Wed 2021-03-10 CET ]
empty set for span [ Mon 2021-03-08 CET | Thu 2021-03-11 CET ]
empty set for span [ Mon 2021-03-08 CET | Fri 2021-03-12 CET ]
empty set for span [ Mon 2021-03-08 CET | Sat 2021-03-13 CET ]
empty set for span [ Mon 2021-03-08 CET | Sun 2021-03-14 CET ]
TagsNo tags attached.
abrt_hash
URL
Attached Files

-Relationships
+Relationships

-Notes

~0028877

kabe (reporter)

perl-DateTime-Set package seems to be not provided by CentOS,
even in ELRepo.
Did you compile it yourself? Or from some unofficial repository?

~0028881

mjakusch (reporter)

You are right, this package is from EPEL ... Sorry.

~0028890

kabe (reporter)

I could reproduce this with the latest DateTime-Set-0.3900.tar.gz .

As a matter of fact, you only specify the "next" instance when using
DateTime::Set->from_recurrence( recurrence => ... ) .

When recurrence 2 steps away (2 weeks in your example) spans
timezone change involving DST,
DateTime::Set seems to be utterly confused trying to get a
"previous" instance of the date, and returns empty list.

Workaround: Change the DateTime::Set initializer to use explicit
"next" and "previous" parameter, instead of "recurrence", as

    my $ds = DateTime::Set->from_recurrence(
        next => sub { return $_[0]->add( weeks => 1); },
        previous => sub { return $_[0]->subtract( weeks => 1); },
        span => DateTime::Span -> from_datetimes (
            start => $dt_start,
            end => $dt_end
        )
    );

seems to work nicely.

Anyway, perl(DateTime::Set) isn't distributed as official CentOS rpm,
so this bugreport doesn't fit here.

~0028954

mjakusch (reporter)

Thanks for the workaround!

Regarding the bugreport I also posted the issue to bugzilla.redhat.com (Fedora EPEL)
+Notes

-Issue History
Date Modified Username Field Change
2017-03-14 17:16 mjakusch New Issue
2017-03-14 17:16 mjakusch File Added: debug_DTS.pl
2017-03-17 02:21 kabe Note Added: 0028877
2017-03-17 10:30 mjakusch Note Added: 0028881
2017-03-21 00:27 kabe Note Added: 0028890
2017-03-28 16:05 mjakusch Note Added: 0028954
+Issue History