Closed Bug 1180198 Opened 9 years ago Closed 9 years ago

Thunderbird with Lightning and Provider for Google Calendar 1.0.4 has suddenly stopped responding to "Dismiss" button when displaying Alerts

Categories

(Calendar :: Provider: GData, defect)

Lightning 3.3
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 356002

People

(Reporter: brhengineers, Unassigned)

Details

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:38.0) Gecko/20100101 Firefox/38.0
Build ID: 20150511103819

Steps to reproduce:

I have two copies of Thunderbird running on two different machines.  One is running Thunderbird Version 38.0.1 under Windows 7 and one is running Version 31.7.0 under Ubuntu 14.04.  Both have been working well for quite some time.  

I changed nothing on either machine.


Actual results:

Suddenly in the last few days pop up alerts from Google Calendar have been listing multiple alerts going back several weeks on both machines.  Most older alerts will have been previously dismissed successfully on at least one of the two machines.  

The pop up windows for Calendar Alerts do not respond to clicking the "Dismiss" or "Dismiss All" buttons.  The only way to close the window is using the "X" button in the top corner but the window will keep popping up every few minutes. 

Clearing the "Show missed Reminders" preference in Calendar settings stops the display of old reminders.


Expected results:

Previously dismissed reminders should not be redisplayed.  Reminders which have not been previously dismissed should respond to the "Dismiss" and "Dismiss All" buttons.
It look pretty much that you're affected by the recent Google change on reminders - see bug 1176483. Have you been using SMS reminders?
Component: Untriaged → Provider: GData
Product: Thunderbird → Calendar
Version: 31 → Lightning 3.3
I only occasionally used SMS reminders.  Where I did this was set for a specific calendar event and done via the web interface.  Most of the "undismissable" events did not have SMS reminders set.
Having now run for several days with the  "Show missed Reminders" option cleared I can report the following behaviour on both machines:

1.  Only current reminders display.  This correctly happens at the preset time.
2.  The reminders still do not respond to the "Dismiss", "Dismiss All" or "Snooze" buttons.
3.  The only way to remove the Alert pop up is with the "X" in the top corner.
4.  When dismissed in this way the Alert does not redisplay as long as the "Show missed Reminders" option cleared.
5.  Missed events occurring when Thunderbird is not loaded are ignored when Thunderbird is later loaded.

The fact that this problem started suddenly at more or less the same time on two different machines running different operating systems and different versions of Thunderbird suggests that it may be due to some change to the Google Calendar interface affecting the Lightning add-on Provider for Google Calendar 1.0.4.
What error messages do you see reported in Tools > Error Console when trying to "Dismiss" or "Snooze"? Please copy and paste them here.
Flags: needinfo?(brhengineers)
Checked the Error Console on the Windows Machine for messages at the time that I tried to dismiss a message originating from my wife's calendar a few hours ago and found the following error report:

Timestamp: 2015-07-07 14:01:09
Error: [calGoogleCalendar] Modifying item Yoga failed:2147500037: {
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Forbidden"
}
],
"code": 403,
"message": "Forbidden"
}
}

Source File: file:///C:/PortableApps/PortableApps/ThunderbirdPortable/Data/profile/extensions/%7Ba62ef8ec-5fdc-40c2-873c-223b8a6925cc%7D/components/calGoogleCalendar.js
Line: 529


The error message on the Linux machine was somewhat different as follows:

[JavaScript Error: "CalDAV: Unexpected status modifying item to Carol: 403
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Johannesburg
X-LIC-LOCATION:Africa/Johannesburg
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20150303T211459Z
LAST-MODIFIED:20150707T120009Z
DTSTAMP:20150707T120009Z
UID:8kg0p28rhvjpvalb7gcb4hmj08@google.com
SUMMARY:Yoga
STATUS:TENTATIVE
RRULE:FREQ=WEEKLY;UNTIL=20160202T124500Z;BYDAY=TU
EXDATE:20150407T124500Z
X-MOZ-LASTACK:20150707T120009Z
DTSTART;TZID=Africa/Johannesburg:20150303T144500
DTEND;TZID=Africa/Johannesburg:20150303T154500
X-LIC-ERROR:No value for LOCATION property. Removing entire property:
SEQUENCE:1
TRANSP:OPAQUE
X-MOZ-GENERATION:1
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DURATION:-PT30M
ATTENDEE:mailto:brhengineers@gmail.com
SUMMARY:Alarm notification
DESCRIPTION:This is an event reminder
ATTENDEE:mailto:brhengineers@gmail.com
END:VALARM
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-PT45M
DESCRIPTION:This is an event reminder
END:VALARM
END:VEVENT
END:VCALENDAR
"]


I then created a test event on the Linux machine and got the following error messages when the event was created (Not dismissed):

Timestamp: 07/07/2015 16:29:14
Error: A promise chain failed to handle a rejection.

Date: Tue Jul 07 2015 16:21:42 GMT+0200 (SAST)
Full Message: TypeError: this.mDeferred is null
Source File: resource://gdata-provider/modules/gdataRequest.jsm
Line: 244
Source Code:
244


Timestamp: 07/07/2015 16:29:14
Error: A promise chain failed to handle a rejection.

Date: Tue Jul 07 2015 16:21:42 GMT+0200 (SAST)
Full Message: TypeError: this.mDeferred is null
Source File: resource://gdata-provider/modules/gdataRequest.jsm
Line: 244
Source Code:
244

The event was however created and checking the Google Web Browser interface to the calendar it was propagated to the Google server.

When the pop-up alert activated it responded to the second try to dismiss it and there were no error messages.

Checking the windows machine the test event had not yet appeared in the calendar at the set time, which was 16:45.  This was probably due to not allowing enough time for the calendar to update.  It thus did not create an alert.   On checking again a little later I found the test event had appeared in the Thunderbird Calender but there was no alert, probably because it was treated as a missed reminder.  There were however several errors reported in the Error Console.  They were:

Timestamp: 2015-07-07 16:48:11
Error: DEPRECATION WARNING: Encoding to non-UTF-8 values is obsolete
You may find more details about this deprecation at: http://bugzilla.mozilla.org/show_bug.cgi?id=790855
resource://gre/components/mimeJSComponents.js 438 MimeConverter.prototype.encodeMimePartIIStr_UTF8
chrome://messenger/content/mailWindowOverlay.js 3416 SendMDNResponse
chrome://messenger/content/mailWindowOverlay.js 3090 gMessageNotificationBar.setMDNMsg/buttons<.callback
chrome://global/content/bindings/notification.xml 460 _doButtonCommand
chrome://messenger/content/messenger.xul 1 oncommand
null 0 null

Source File: resource://gre/modules/Deprecated.jsm
Line: 79

Timestamp: 2015-07-07 16:48:40
Error: uncaught exception: 2147746065

Timestamp: 2015-07-07 16:59:17
Warning: This site makes use of a SHA-1 Certificate; it's recommended you use certificates with signature algorithms that use hash functions stronger than SHA-1.
Source File: https://accounts.google.com/o/oauth2/token
Line: 0

I hope that this helps.
Flags: needinfo?(brhengineers)
It looks like on one machine you are using caldav, on the other you are using the Provider for Google Calendar. I'm a bit confused which one you are using where, because sometimes you mention Linux with a caldav message, and other times linux with a provider error. Can you make sure you are using either the one or the other? Please file a new bug for the caldav errors, if you are still getting them.

For the calendars with the Provider for Google please follow the steps at https://wiki.mozilla.org/Calendar:GDATA_Provider#Enabling_Debugging and post the message with the JSON data uploaded just prior to the "Forbidden" error.
Flags: needinfo?(brhengineers)
Sorry for the delay in responding and for any confusion.

Firstly both machines were set up to use the provider for Google Calendar but checking them today I found the following difference. The address used for my wife's calendar in the Calendar Properties Panel for this calendar on the Windows machine looks like 
googleapi://myaddress@gmail.com/?calendar=wifesaddress%40gmail.com.
The address is accessible and can be edited.

On the Linux machine it looks like 
https://apidata.googleusercontent.com/caldav/v2/wifesaddres@gmail.com/events
In this case only, the address is greyed out so that I cannot change it.  I'm not sure why this is or how it came about.  

The Windows machine was set up a long time ago and the Linux machine more recently. To clear up the details of the two machines these are:

Machine No. 1 running Windows 7 version 6.1.7601, Service Pack 1
Thunderbird Version 38.2.0
Lightning Version 4.0.2
Provider for Google Calendar Version 1.0.4
Show missed reminders: False

Current behaviour is that reminders from my calendar can be dismissed but reminders from my wife's calendar, shared with me as read only, do not respond the the "Dismiss" button and must be cancelled using the "X" Close Window control.  At this stage I have enabled debugging as requested but must still get a test done from her calendar to check the response.

Machine 2 running Ubuntu 14.04
Thunderbird Version 31.8.0
Lightning Version 3.3.3
Provider for Google Calendar Version 1.0.4
Show missed reminders: False

Current behaviour is now the same as on the Windows machine.
Flags: needinfo?(brhengineers)
On one system you are using Provider for Google Calendar extension to access Google Calendar, and on the other system you are using Lightnings built-in CalDAV provider to access Google Calendar.

You cannot modify calendar data including reminders unless you have write access to the calendar. You wrote the calendar is shared read-only - maybe this explains why you cannot dismiss reminders from the calendar?
OK.  That makes some sense.  It looks like I am using the Provider for Google Calendar extension to access my Google Calendar on both machines but on the Linux machine I have used the CalDAV provider to access my wife's calendar.  I'm not sure how this came about or how to change it as her calendar's address is greyed out and cannot be deleted or changed. 

It may have happened when setting up Lightning and Provider for Google calendar on the Linux machine because it kept asking for her user name and password even though her calendar was already shared with me and her events appear in my Google calendar.  I remember finding a solution in the forums, which involved using my email address when prompted for her credentials but don't recall the exact details.

However, the present functionality is still problematic as:

1.  Immediately before I reported the bug, reminders on both machines behaved as expected.  Then with no changes on my end the problems reported in the original bug report appeared.

2. Unless "Show missed reminders" is set to "False" old reminders keep redisplaying and cannot be permanently dismissed. Closing the Reminder Notification Window acts more like a "Sleep" function and the reminder reappears every few minutes. 

3. I should be able to dismiss a "local" pop-up notification originating from an event my wife's calendar, which is displayed in mine, even though her calendar is shared read-only.  This is how it worked previously and how it works when the calendar is accessed in Chrome.  Clearly she still needs to get a notification and dismissing the pop-up on my machine should not change the status on her side.  When I access my calendar via Chrome, her shared events are displayed and I receive reminders relating to these shared events.  I am able to dismiss the reminder pop-up in my browser without affecting the status of reminders she gets on her PC, tablet or phone.
I have just tried to dismiss a reminder from my wife's calendar on the machine running windows, which uses Provider for Google Calendar to access her calendar at an address like 
googleapi://myaddress@gmail.com/?calendar=wifesaddress%40gmail.com

The error message in the error log is the same as previously:

Timestamp: 2015-08-24 12:15:58
Error: [calGoogleCalendar] Modifying item SSI Aqua failed:2147500037: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "Forbidden"
   }
  ],
  "code": 403,
  "message": "Forbidden"
 }
}

Source File: file:///C:/PortableApps/PortableApps/ThunderbirdPortable/Data/profile/extensions/%7Ba62ef8ec-5fdc-40c2-873c-223b8a6925cc%7D/components/calGoogleCalendar.js
Line: 529
I have now repeated the above test on the machine running Linux and using CalDAV access for my wife's shared calendar.  Below is the information from the error console requested by Philipp.

CalDAV: recv: <?xml version="1.0" encoding="UTF-8"?>
<D:error xmlns:D="DAV:">
 <D:need-privileges>
  <D:resource>
     <D:href>/caldav/v2/WifesAddress%40gmail.com/events/</D:href> // email changed for privacy
   <D:bind/>
  </D:resource>
 </D:need-privileges>
</D:error>

Timestamp: 02/09/2015 12:15:21
Error: CalDAV: Unexpected status modifying item to Carol: 403
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Johannesburg
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20141107T134612Z
LAST-MODIFIED:20150902T101520Z
DTSTAMP:20150902T101520Z
UID:mgnonjjq0r018ojgpig8269pio@google.com
SUMMARY:Aqua
STATUS:CONFIRMED
RRULE:FREQ=WEEKLY;BYDAY=WE
EXDATE:20141224T110000Z
EXDATE:20141231T110000Z
EXDATE:20150401T110000Z
EXDATE:20150408T110000Z
EXDATE:20150624T110000Z
X-MOZ-LASTACK:20150902T101520Z
DTSTART;TZID=Africa/Johannesburg:20141105T130000
DTEND;TZID=Africa/Johannesburg:20141105T140000
X-LIC-ERROR:No value for LOCATION property. Removing entire property:
SEQUENCE:2
TRANSP:OPAQUE
X-MOZ-SNOOZE-TIME-1441191600000000:20150902T103020Z
X-MOZ-GENERATION:1
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DURATION:-PT30M
ATTENDEE:mailto:brhengineers@gmail.com
SUMMARY:Alarm notification
DESCRIPTION:This is an event reminder
ATTENDEE:mailto:brhengineers@gmail.com
END:VALARM
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-PT45M
DESCRIPTION:This is an event reminder
END:VALARM
END:VEVENT
END:VCALENDAR

Although Philipp recommended that I post a new bug I have included the CalDav error message here as I feel the problem with Provider for Google Calendar and the problem with CalDav may have a common source.
In my opinion the source for the error is known and was posted by you already: the calendar is shared read-only. Therefore modifications to the calendar fail and the Google server responds with error code 403 Forbidden, and the CalDAV server responds with error code 403 need-privileges.

Enhancing Lightning to support snooze/dismiss reminders from read-only calendars would be Bug 356002 with help of Bug 861594.
You are correct.  This bug is in fact a duplicate of Bug 356002 with Bug 861594.  These were not found when searching for"not responding to "Dismiss" button".

I am therefore going to try and mark this as a duplicate.  If this is not the correct procedure please educate me as a relative newbe to bugzilla.
Status: UNCONFIRMED → RESOLVED
Closed: 9 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.