Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
Resource Resolver 1.11.6
-
None
Description
With SLING-6943 (and follow up issues) we removed larger synchronized blocks in favour if smaller ones to not call to the service registry from within a synchronized blocks.
However, this split up synchronization might lead to concurrency issues - the code that got split up into smaller sync blocks still expects that no one interferes while all the blocks are executed.
As that might happen, this results in the code making wrong expectations.
We probably need to get back to large sync'ed blocks and call the service registry from within.
Update: the code is actually written with the exceptional case in mind (two providers for the same path) - only for that case the lazy getting of services makes sense. As the normal use case requires the service anyway, we can avoid calling to the service registry from within the sync blocks - punishing the exceptional case with potentially unnecessary fetched providers