[
https://issues.apache.org/jira/browse/SLING-8946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17144920#comment-17144920
]
Dirk Rudolph edited comment on SLING-8946 at 6/25/20, 1:40 PM:
---------------------------------------------------------------
*TLDR* If SLING-9365 remains an optional opt-in we have to expect a higher
startup time of Sling Applications registering a arge amount of
scripts/servlets. However the project that was facing this issue already change
direction towards a different approach, getting rid of the custom
ResourceProvider implementation at all. So I'm also fine if we revert the
changes and keep this open. wdyt?
As said before the functional defect addressed here, has been resolved. The
performance problems reported by [~sonagupt] are related to AEM which
apparently registers more than 1000 ResourceResolvers. The logic does not scale
well for that amount and as explained before the registered ResourceProviders
are iterated with a polynomial time complexity. SLING-9040 addressed one of
those iterations and SLING-9077 was supposed to address another. Still it would
not resolve the problem when scaling to 10s of thousands of ResourceProviders.
SLING-9365 simply addresses this problem from a different angle by not
registering the (thousands of) ServletResourceProviders in the first place.
Afaics the failing tests were simply caused by timeouts during the setup of the
integration tests.
was (Author: diru):
*TLDR* If SLING-9365 remains an optional opt-in we have to expect a higher
startup time of Sling Applications registering a arge amount of
scripts/servlets. However the project his issue was facing already change
direction towards a different approach, getting rid of the custom
ResourceProvider implementation at all. So I'm also fine if we revert the
changes and keep this open. wdyt?
As said before the functional defect addressed here, has been resolved. The
performance problems reported by [~sonagupt] are related to AEM which
apparently registers more than 1000 ResourceResolvers. The logic does not scale
well for that amount and as explained before the registered ResourceProviders
are iterated with a polynomial time complexity. SLING-9040 addressed one of
those iterations and SLING-9077 was supposed to address another. Still it would
not resolve the problem when scaling to 10s of thousands of ResourceProviders.
SLING-9365 simply addresses this problem from a different angle by not
registering the (thousands of) ServletResourceProviders in the first place.
Afaics the failing tests were simply caused by timeouts during the setup of the
integration tests.
> Non-deterministic shadowing of resource observation
> ---------------------------------------------------
>
> Key: SLING-8946
> URL: https://issues.apache.org/jira/browse/SLING-8946
> Project: Sling
> Issue Type: Bug
> Components: ResourceResolver
> Affects Versions: Resource Resolver 1.5.34
> Reporter: Dirk Rudolph
> Assignee: Robert Munteanu
> Priority: Critical
> Fix For: Resource Resolver 1.6.18
>
> Attachments: PerformanceScript.sh
>
> Time Spent: 1.5h
> Remaining Estimate: 0h
>
> The BasicObservationReporter implements shadowing of events being propagated
> per ResourceProvider instance [1]. Assuming we do have 2 ResourceProviders
> registered, where the one shadows the other like this:
> - RP A registered on /
> - RP B registered on /path
> then currently the excludes given to the BasicObservationReporter are
> different depending on either RP A or RP B gets registered first:
> - RP A before RP B => excludes are empty
> - RP B before RP A => excludes contain /path
> This is because only the newly registered RP gets its ProviderContext updated
> [2]
> Same applies if RP B is registered before RP A and gets unregistered. In that
> case the ObservationReporter of RP A stays untouched.
> [1]
> [https://github.com/apache/sling-org-apache-sling-resourceresolver/blob/master/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporter.java#L102]
> [2]
> [https://github.com/apache/sling-org-apache-sling-resourceresolver/blob/master/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java#L358]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)