hi Oliver On Feb 25, 2015, at 12:09 PM, Oliver Lietz <[email protected]> wrote:
> On Wednesday 25 February 2015 10:50:36 Antonio Sanso wrote: >> hi * >> >> On Feb 24, 2015, at 6:00 PM, Oliver Lietz >> <[email protected]<mailto:[email protected]>> wrote: >> >> On Friday 20 February 2015 17:53:02 Marius Petria wrote: >> Hi, >> >> hi Marius, >> >> I discovered an issue related to service users. Due to the indeterminism >> of OSGI a consumer of ServiceUserMapper cannot be sure that >> getServiceUserID will find a registered mapping even if that mapping has >> been configured. For example if a component starts roughly at the same >> time as the mapping is installed it can happen that the calls the >> component makes to loginService to fail. More concretely that can happen >> for example if one needs a session in an activate method to register jcr >> event listener, or to read some configuration properties from the >> repository. >> >> In order to make this behavior more predictable I created an issue [1] >> proposing to always register an osgi service (I called it >> ServiceUserMapping) right after a mapping is installed, such that consumer >> components can reference it and wait for the mapping to be available. I >> also worked out an implementation in [2]. >> >> First, I would like to ask you if you think the problem is valid and if >> the approach is correct? >> Second, it will be really helpful if you can also comment on the issue >> around the provided implementation. >> >> I hadn't the time to look into the implementation but I have this use case >> right now. A service user mapping and a bundle with a service which relies >> on this mapping are deployed in a (AEM) package - service fails because of >> mapping not yet available when service gets activated. A ServiceUserMapping >> service as reference would solve this problem. So +1 for this approach and >> the name ServiceUserMapping. >> >> a valid alternative that will end up to a NOOP for SLING-4312 is to use >> Sling initial content in the same bundle rather than a package. > > hi Antonio, > > we have a dedicated bundle (with Sling-Initial-Content) for configurations > and > IMHO service user mappings (as well as other global configurations) should be > kept at a single place and not spread around in different application bundles. in general I do agree with you. This can be an exception though (hence why we introduced the concept of mapping amendments aka https://issues.apache.org/jira/browse/SLING-3578) regards antonio > > Regards, > O. > >> e.g. in your pom >> >> <instructions> >> <Sling-Initial-Content> >> SLING-INF/content;path:=/libs/system/config;overwrite:=true; >> </Sling-Initial-Content> >> </instructions> >> >> I did use this approach and works (for the record it works also in AEM) >> >> regards >> >> antonio >> >> >> >> Regards, >> O. >> >> Marius >> >> [1] https://issues.apache.org/jira/browse/SLING-4312 >> [2] https://github.com/mpetria/sling/compare/mpetria:trunk...dev-SLING-4312 >
