[Kde-pim] akonadinext update: entity processing pipelines in resources

Aaron J. Seigo aseigo at kde.org
Wed Dec 17 10:39:10 GMT 2014


hey :)

hows that for a subject line full of jargon? ;)

in the akonadinext repo, sychnronizer processes are approaching some sort of 
early-stage completeness. they currently:

* accept connections from clients
* inform clients when the revision in the store changes[1]
* take commands from clients and respond with a task completion message[2]
* load Resource plugins to deal with storing data and synchronizing with the 
source
* manage processing pipelines for entities

it's that last part that i'm writing about here, actually. a pipeline is zero 
or more processing units (soon to be plugins) that (currently) sit in a chain 
and do some processing on entities[3] whenever they are created, modified or 
deleted. we will be using this to populate indexes, trigger full text 
indexing, applying client-side filters, spam/scam detection, etc. etc.

anything that can be / should be done to a given entity when it appears, 
changes or is removed will happen in these pipelines.

things left to do:

* make PipelineFilter pluggable so that it is easy for people to add new 
filters (including ones we don't ship ourselves)
* generate a configuration scheme which Pipeline can use to populate pipelines 
at runtime according to the user's wishes
* write a few PipelineFilter plugins that do some actually useful things that 
we can use in testing

currently, pipelines are just a simple one-after-the-other processing afair. 
It is set up already for asynchronous processing, however. Eventually I would 
like to allow filters to note that they can be parallelized, should be run in 
a separate thread, ??? ... mostly so that we can increase throughput.

as for safety: before a pipeline is started, the entity will be stored on disk 
in storage, so if something Goes Wrong(tm) and the synchronizer process 
crashes data will not be lost and the pipeline can pick up again. to make this 
even more robust, i need to implement pipeline checkpointing so it 
automatically skip over problematic filters (self-healing).

at this point, i'm very much open to ideas and suggestions for the pipeline 
feature. this is the easiest point in time to adjust the design and 
implementation. so speak up if this interests you! :) also: if you want to 
hack on these things, you are very much welcome to get your hands dirty with 
me. there is a lot to do, it isn't (yet ;) hard to make useful progress in the 
code base, ... come in, the water's nice!

[1] this is actually faked right now, waiting on further development of the 
Storage class and how we use it; but the synchronizer side of this is all done 

[2] in case you're wondering about efficiency there, on my laptop a client and 
server can exchange in excess of 800,000 messages of this sort per second. 
that includes the buffer creation overhead, transmission, reception...

[3] emails, calendar items, whatever.

-- 
Aaron J. Seigo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20141217/c1280d5d/attachment.sig>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list