[CalendarServer-users] Query regarding attendee(s) inbox update.

Andre LaBranche dre at apple.com
Mon Sep 12 17:14:08 PDT 2016


Hello Gaurav,

Glad you're enjoying CalendarServer!

Short answer: recipient inboxes receive scheduling messages sometime after the sender's request is acknowledged, not inline with the request.

You have noticed one of the key scalability enhancements in recent CalendarServer history: instead of synchronously delivering scheduling messages to recipients when a new or updated invitation is sent, we now create lightweight jobs (work requests) in the database to represent the actual work that is needed, typically one for each recipient, allowing the server to acknowledge the sender's request much more quickly. Shortly after the sender's request is completed, the jobs reach their start time and are processed, (perhaps by multiple / different servers in a large deployment).

Various aspects of the "scheduling in the queue" implementation are configurable, however I don't recommend changing any of these settings in your situation. See conf/caldavd-stdconfig.plist:
https://github.com/apple/ccs-calendarserver/blob/ff3ae19229b4ef8d72173c5eae67636f3adec198/conf/caldavd-stdconfig.plist#L1569

The exact amount of time it takes for a given recipient's inbox to update after an invitation was sent depends on various factors (configuration, number of attendees, server performance / load), so the best way to know when a specific inbox has a new message is to let the server tell you. CalendarServer offers two different notification systems: Apple Push Notification Service, and AMP (Asynchronous Message Passing, a Twisted framework). APNS is only an option for Apple platforms, but AMP can be integrated into other projects pretty easily - check out the docs:

http://twistedmatrix.com/documents/current/api/twisted.protocols.amp.html

You would need to write an implementation for these three commands:

https://github.com/apple/ccs-calendarserver/blob/e8c1adf17f4fa661926d70d2ddf8758d00aae06c/calendarserver/push/amppush.py#L35-L53

... and since your goal appears to be to tell *another* system to refresh because *IT* has received a new message, I might recommend implementing the AMP client on that system, if possible, to minimize the layers of indirection.

Cheers,
-dre

> On Sep 12, 2016, at 1:35 PM, Gaurav Jain <monkeyfdude at gmail.com> wrote:
> 
> Hi,
> 
> I have been using DCS 7.0 for a while and it works great. But there is one issue I would like to have clarification.
> 
> I assume server maintains inbox for all its principals. With that assumption,
> 
> Use case is as follows:
> 
> * Organizer A sends an invite to attendee B
> * Organizer A receives a success response from Server.
> 
> Now my question is:
> 
> Will the server update the inbox of B before sending the success response to A or will it be updated sometime after?
> 
> Reason I am asking:
> 
> In my case, A sends a client side notification to B to sync with server after receiving the success response.
> 
> But some of the time, B is not getting the updates after syncing with server.
> 
> If B syncs again after 5 - 10 secs, then it gets the update.
> 
> Could you please provide some pointers?
> 
> 
> Best Regards,
> Gaurav Jain
> 
> PS: Thank you for DCS.
> 
> 
> _______________________________________________
> calendarserver-users mailing list
> calendarserver-users at lists.macosforge.org
> https://lists.macosforge.org/mailman/listinfo/calendarserver-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-users/attachments/20160912/afa0c2d8/attachment.html>


More information about the calendarserver-users mailing list