Closed Bug 386516 Opened 17 years ago Closed 13 years ago

Monthly repeating event on last day of month occurs on wrong dates

Categories

(Calendar :: Internal Components, defect)

defect
Not set
major

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: mozillabugz, Assigned: Fallen)

References

Details

(Keywords: dataloss, Whiteboard: [libical-upstream?])

Attachments

(2 files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4
Build Identifier: 0.5 (2007062404)

Using Lightning 0.5 in Thunderbird 2.0.4
with the moz-profile/SQLite provider. 
Three-monthly repeating events show in the month prior to which they should occur.


Reproducible: Always

Steps to Reproduce:
1. Create new calendar.
2. Create repeating all-day event on 2006-12-31, with monthly repeat, every three months, on the last day of the month, to repeat forever, in the new calendar.
3. Inspect events show in calendar.
Actual Results:  
Event incorrectly occurs as follows
2007-02-28, 2007-05-31, 2007-08-31, 2007-11-30, 2008-02-29 ...

Expected Results:  
Event should occur as follows
2006-12-31, 2007-03-31, 2007-06-30, 2007-09-30, 2007-12-31 ...


This used to work properly in Lightning 0.3 (and I believe in the earlier pre-0.5 versions)
Version: unspecified → Lightning 0.5
Confirmed. I tested with 3-monthly recurring event starting at 31.07.2007 
It shows the first occurrence on 2007-09-30.

Here is the event:
BEGIN:VEVENT
CREATED:20070701T192727Z
LAST-MODIFIED:20070701T192757Z
DTSTAMP:20070701T192757Z
UID:36892c6b-b78b-4fec-aca2-a3fa7e9dc8bb
SUMMARY:test
RRULE:FREQ=MONTHLY;COUNT=10;INTERVAL=3;BYMONTHDAY=-1
DTSTART;VALUE=DATE;TZID=/mozilla.org/20070129_1/Europe/Berlin:20070731
DTEND;VALUE=DATE;TZID=/mozilla.org/20070129_1/Europe/Berlin:20070801
BEGIN:VALARM
TRIGGER;VALUE=DURATION:-PT15M
DESCRIPTION:Mozilla Alarm: test
ACTION:DISPLAY
END:VALARM
END:VEVENT

tested with Lightning 0.5/thunderbird 2.0.0.4
Status: UNCONFIRMED → NEW
Component: Provider: Local Storage → Internal Components
Ever confirmed: true
QA Contact: storage-provider → base
I can confirm it with Sunbird 0.5
I can't see this problem with Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5pre) Gecko/20070630 Calendar/0.7pre
Does this still occur in the nightlies? IMO it has been fixed in bug 381415 (though incorrectly, follow-up bug 386502).
I checked this in the latest nightly lightning build (20070716) and this issue still occurs, but a little different.

Now the first event of this rule is the 2006-12-31, which is correct, but the next event occurs at 2007-02-28, and this is wrong. 

So now the rule incorrectly occurs as follows
2006-12-31, 2007-02-28, 2007-05-31, 2007-08-31, 2007-11-30, 2008-02-29 ...


Tried again with 0.7pre 2007081306

I though it was only repeating on months with 32 days, (i.e. missing June in this case, but I realised that wasn't true as it even missed September)

I now occurs
2006-12-31, 2007-03-31, 2007-12-31, 2008-03-31 ...

Should there be an option for "last day" of month similar to the "last sunday" of month option?

0.7 blocker?
Version: Lightning 0.5 → Trunk
Andy, can you export the event to an ICS file and attach it to this bug?
RRULE:FREQ=MONTHLY;INTERVAL=3;BYMONTHDAY=31 means every 3 month on the 31st and not every 3 month on the last day of month (RRULE:FREQ=MONTHLY;INTERVAL=3;BYMONTHDAY=-1). Seeing occurrences only in months with 31 days is correct. This is INVALID imo.

Btw we should file a bug to offer "Last day of month" in the new recurrence dialog.
When I first logged this bug in 0.5 there was an option "last day of month", it did adjust the date from 31st to 28th/29th/30th as appropriate, unfortunately it repeated one month earlier than it should have.

Now with 0.7pre the "last day of month" option is gone, the new UI forces you to choose an actual dayof month instead, and as you mention it then only repeats on months with 31 days.

Is the "BYMONTHDAY=-1" option no longer user internally?

This seems to me to be a regression from 0.3 and a further regression from 0.5
(In reply to comment #8)
'Last day of the month' is already filed as Bug 388418.
From my exported .ical file, I edited the text file to change the BYMONTHDAY=31 to BYMONTHDAY=-1, then deleted the event from my calendar, and re-imported it, the item now repeats on the last day of each 3rd month, but in each case it occurs one month too soon (apart from the initial date)

Expected dates
2006-12-31, 2007-03-31, 2007-06-30, 2007-09-30, 2007-12-31

Actual dates
2006-12-31, 2007-02-28, 2007-05-31, 2007-08-31, 2007-11-30

This is essentially the same ocurrance problem originally reported with 0.5, the only difference now is the inability to enter this type of event with the new UI.

After a lot of headaches, I found that the problem with bymonthday seems to be fixed in libical 0.27. It seems that somebody has started working on libical again. We need to upgrade our copy of libical, while keeping our changes. I'll hope to figure out the required cvs magic when i'm back at my computer that has the initial import and all that.
I see the "last day of month" option has returned in 0.7 final, but the even still fire on the wrong months as per comment #11, is a libical refresh likely in 0.8, is it the root cause?
patch anyone? this is a major headache for me.
Thunderbird 2.0.0.14
Lightning Nightly Build 17/07/2008
Windows XP SP3
Intel Core Duo T7500 2GB Memory

This bug is still apparent.

Seems to work on defined days of month but not 'Last day of month'.  1st repeat event is at 2 months, the rest at 3 monthly intervals.

(Reproduced from Original Comment)

Reproducible: Always

Steps to Reproduce:
1. Create new calendar.
2. Create repeating all-day event on 2006-12-31, with monthly repeat, every
three months, on the last day of the month, to repeat forever, in the new
calendar.
3. Inspect events show in calendar.
Actual Results:  
Event incorrectly occurs as follows
2007-02-28, 2007-05-31, 2007-08-31, 2007-11-30, 2008-02-29 ...

Expected Results:  
Event should occur as follows
2006-12-31, 2007-03-31, 2007-06-30, 2007-09-30, 2007-12-31 ...

Severity: normal → major
OS: Windows XP → All
Hardware: PC → All
Version: Trunk → unspecified
I believe this bug will persist until a newer version of libical code is
imported, this seems to have been delayed in each of the recent releases,
meanwhile my quarterly VAT reminder fails to be useful.
Adding dataloss keyword, as people will miss their appointments due to this bug.
Keywords: dataloss
Simon, why is this dataloss? To me it looks like the data is stored correctly (no loss at all), but the event is rendered incorrectly (I suspect some libical update is the cause). Exporting the data and importing it into another calendar app would probably show it up correctly.
It is dataloss in the sense, that the user might miss his appointment.
i agree, and i think the same for #404300
My 452705 has been marked as a duplicate of this 386516, but in fact, it extends it, so I am bringing the further issues here.

I see "custom repeat" "monthly" "Day of the month" has more issues.  I created a reoccurring appointment at 2008Feb28: repeat monthly/every 2 months/the last day of the month/create 2 Appointment(s)/result was THREE events Feb28 Mar31 May31 instead of TWO events Feb28 April30.

So the "Day of the month" bug is not limited to 3 monthly.  I found lots of other similar instances, but time prevents me writing up more - sorry!

I also note that having set up such an appointment, trying to edit it and choosing repeat custom brings up a sheet which does NOT proffer the previous entries.  Again perhaps not a bug but VERY annoying.

Finally, I discovered that stretching the custom window to fill my (modest sized) screen resulted in 10 months on display starting with the event's start month, which is nice, but not complete eg if setting up 4 quarterly events, unless you have a big screen.  Having a horizontal scroll to view later months might be nice.  Again, not a bug as such.

I might join a calendar reform club.  Could be time we reviewed the work of Julius and Gregory!
I can't reproduce this bug anymore. Cases reported in comment #0 and comment #1
now works for me: if I set a three monthly repeat event starting on 2006-12-31, the second occurrence is on 2007-03-31 i.e. three months later and not two months.
The others occurrences are all right every three months.
Could someone verify that?

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081028 Lightning/1.0pre Shredder/3.0b1pre
Flags: in-testsuite?
Very pleased to see the new iCal in place, is the fix included in the build for 2008-10-30 3.0b1 testday? 
Which nightly is the minimum to pick it up?
The bug is still there with Lightning 1.0pre 20081028044505 
but disappears with Lightning 1.0pre 20081026055133, 
both tested on 
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081030 Lightning/1.0pre Shredder/3.0b1pre
Reproducible using Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081219 Lightning/1.0pre Shredder/3.0b2pre.
Flags: blocking-calendar1.0?
Summary: Three-monthly repeat occurs on wrong dates → Monthly repeating event on last day of month occurs on wrong dates
Thunderbird 3.0b1
Lightning Nightly Build 13/01/2009
Windows XP SP3
Intel Core Duo T7500 2GB Memory

Still shows the bug.  

Sad really as it means I am having to run a couple of calendars to get what I need.
Mozilla/5.0 (Windows; U; Windows NT 5.1; fy-NL; rv:1.9.1.5) Gecko/20091204 Lightning/1.0b1 Thunderbird/3.0

I am unable to create a custom repeating event. When I click on Custom... and edit the repeating pattern lightning seems to hang with a sandglass. Also clicking on OK doesn't close the repeatdialog.
This is both with local calendar as with google calendar. Repeating events created in Google Calendar online can be opened in Lightning, but also seem to hang.
Still occurs in Lightning module for Thunderbird version 1.0b3pre 
Build ID : 20101018044614
I can also confirm that this still happens with 1.0b3pre.
I cannot reproduce this anymore with:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.15) Gecko/20110307 Fedora/3.1.9-0.39.b3pre.fc14 Lightning/1.0b3pre Thunderbird/3.1.9


The events repeats every last day of a month AND on the current day.
Felix, I can still reproduce it :-(

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0pre) Gecko/20110327 Lightning 1.0b4pre Thunderbird/3.3a4pre

If you set an event on the 31 of March and set a monthly repeating rule "the last" + "day of the month" + every *3* months, you get the first occurrence (after the 31 of March) on 31 of May instead of the 30 of June i.e. after two months instead of three. 
From that occurrence on, others occurrences have a distance of 3 months but the whole sequence is now shifted one month earlier.
Anyone, can you please take a look into this issue? I have an event that occurs semi-annually on the last day of the October month and this event gets displayed incorrectly. I always catch this event a month early.
Attached patch Fix - v1Splinter Review
This patch takes care. I'm pretty confident this works and have tested with rules containing INTERVAL=3 and one of:

BYMONTHDAY=-1
BYMONTHDAY=-2
BYMONTHDAY=3,11,19,27

If you want to test this, I wouldn't be sad :-)
Assignee: nobody → philipp
Status: NEW → ASSIGNED
Attachment #568045 - Flags: review?(bv1578)
Whiteboard: [libical-upstream?]
I can help you test this patch. Let me know if you have a lightning/google cal provider extension available. Thank you very much for looking into this issue.
I'd be happy to test if you can provide a xpi or even just the compiled calbasecomnps.dll (I assume that's where the patched code lives?)
Well done Philipp :-) , I had tried to work on this but icalrecur.c slowed down me.

I'm going to test it a bit.

@ Andy Burns
here is a build for Thunderbird 8 (windows):

http://dl.dropbox.com/u/21864396/lightning1.0b8-TB8-Bug386516.xpi

(use it at your own risk).
Comment on attachment 568045 [details] [diff] [review]
Fix - v1

As far as I can see it works and doesn't break different rules.
Attachment #568045 - Flags: review?(bv1578) → review+
comm-central changeset ce15e4d47e74
releases/comm-aurora changeset e4556d8834eb
releases/comm-beta changeset e05b354769be
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Target Milestone: --- → 1.0b8
Flags: blocking-calendar1.0?
The repeat still doesn't appear correct,

I created an entry for 31st August 2011, with a repeat every 3 months on the last day of the month, expecting the next repeat dates would be 

30th November 2011
29th February 2012
31st May 2012
31st August 2012
30th November 2012

however the actual repeat dates are

25th November 2011
24th Februry 2012
25th May 2012
31st Augist 2012
30th November 2012
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Andy, what version of Thunderbird and what version of Lightning do you use? This was just recently fixed therefore ensure that you are running Thunderbird 8 + Lightning 1.0 or newer.
Yes, running TB 8.0 with Lightning 1.0

Can try it with a clean profile and/or new calendar if required.
Sorry, just tried to reproduce with a new event and couldn't, then I undid my recent add/delete events to calendar and discovered I''d fumbled with the droplist and my test event that seemed to be failing was set for last friday of month, not last day of month. 

Amended the repeat and can confirm is *IS* fixed.
Status: REOPENED → RESOLVED
Closed: 13 years ago13 years ago
Resolution: --- → WORKSFORME
Resolution: WORKSFORME → FIXED
Flags: in-testsuite?
You need to log in before you can comment on or make changes to this bug.