[Kolab-devel] event triggered freebusy data generation

Thomas Jarosch thomas.jarosch at intra2net.com
Mon Mar 3 10:54:14 CET 2014


Hi Thomas :)

On Monday, 3. March 2014 10:23:08 Thomas Brüderli wrote:
> And with the freebusy web service serving static files or delegating
> generation to a paced daemon running in the background makes it less
> vulnerable against overload and DoS attacks.

...yes, those were all design criterias for "our" freebusyd.

It has a job queue, concurrent job limits and also
does not forget about jobs if you reboot the system
in the middle of a running job.

It certainly needs polishing to adapt to the current Kolab code,
but the C++ basis for that is there.

>From the README file:

-------------------------------------------------
Kolab provides server sided freebusy information for calendar folders.
A script called pfb.php connects to the IMAP server and processes the data.
Every change in a calendar folder will trigger a new session of pfb.php,
which results in many parallel running pfb.phps.
This easily kills even modern hardware.

freebusyd is a daemon to make sure the generation of freebusy data
doesn't eat all your CPU/memory on your server: All requests
for pfb.php will be queued and executed in a controlled manner.

Features:
* Only one pfb.php is running at a time per owner/folder combination.
* Global maximum concurrent job limit to relieve the system load.
* Persistent request queue. Never lose a request by server reboot etc.
* Requests for folders that get triggered too often in a configurable
  time period get delayed for some minutes. Speeds up large imports
  or move of calendar data between folders.
* Good logging facilities and runs without root privileges.

Optional features:
* A special patch for the cyrus imap server will notify freebusyd
  about deleted or renamed IMAP folders. freebusyd will then remove
  the cached freebusy data for you. No more freebusy ghost entries.

Technical details:
* Written in C++ and should be able to handle 1.000+ users.
* Very CPU friendly: The daemon usually sleeps and will only wake
  up when there is a new request in the queue (uses inotify).
* Tested with large (10.000 events) calendar folders
* Fully doxygen documented
-------------------------------------------------

Cheers,
Thomas



More information about the devel mailing list