[midPoint] Projector waves

Дорофеев Илья i.dorofeev at solarsecurity.ru
Thu Jun 23 13:51:50 CEST 2016


Hi Radovan,

Thanks for the thorough answer. Truth be known, I was expecting to receive it from you ☺

__________________________

Ilya Dorofeev

From: midPoint [mailto:midpoint-bounces at lists.evolveum.com] On Behalf Of Radovan Semancik
Sent: Thursday, June 23, 2016 2:10 PM
To: midpoint at lists.evolveum.com
Subject: Re: [midPoint] Projector waves

Hi,

There are several reasons. But perhaps the most important is provisioning dependencies: https://wiki.evolveum.com/display/midPoint/Provisioning+Dependencies
Resources (or even projections) with dependencies need to be processed sequentially. Outbound expression of a dependent projection needs to be reflected in the input of the "dependee" projection. So our solution is to sort the projections into waves. All the independent projections are processed in the first wave, all the dependent in second wave, all that depends on those in third wave and so on.

The other reason is that there are also attributes that the resource sets or changes by itself (we call them "volatile attributes"). So after provisioning an account we need to re-read that account and apply inbound expressions to make sure that these volatile attribute are correctly applied to the focal object (e.g. user). Therefore even if there are no dependencies there is always a "half-wave" at the end of every projector run to make sure that provisioning side-effects are processed correctly.

Overall, I'm more than aware that the waves are not an ideal way how to process this partially parallel partially sequential computation. A parallel tree-like approach would be much more appropriate. But also much more complex and significantly harder to debug. Therefore we have decided to go with waves at the beginning and change the implementation to a tree-based processing when needed.



--

Radovan Semancik

Software Architect

evolveum.com


On 06/23/2016 11:28 AM, Дорофеев Илья wrote:
Hi guys,

Recently I’ve come across a wiki page https://wiki.evolveum.com/display/midPoint/Simplification+of+processing+in+clockwork+and+projector and have been trying to comprehend what projector waves are all about. The given explanation, to be honest, isn’t clear enough. I have examined the source code as well. Could you give a bit more detailed reasons for waves and ideas behind them? Probably, some use cases or anything else?

__________________________

Ilya Dorofeev





_______________________________________________

midPoint mailing list

midPoint at lists.evolveum.com<mailto:midPoint at lists.evolveum.com>

http://lists.evolveum.com/mailman/listinfo/midpoint

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20160623/be88737f/attachment.htm>


More information about the midPoint mailing list