You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Joerg Hoh (Jira)" <ji...@apache.org> on 2021/10/24 10:25:00 UTC

[jira] [Updated] (SLING-10882) Sling Discovery opens 2 ResourceResolvers to validate current view

     [ https://issues.apache.org/jira/browse/SLING-10882?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Joerg Hoh updated SLING-10882:
------------------------------
    Summary: Sling Discovery opens 2 ResourceResolvers to validate current view  (was: Oak Discovery opens 2 ResourceResolvers to validate current view)

> Sling Discovery opens 2 ResourceResolvers to validate current view
> ------------------------------------------------------------------
>
>                 Key: SLING-10882
>                 URL: https://issues.apache.org/jira/browse/SLING-10882
>             Project: Sling
>          Issue Type: Improvement
>          Components: Discovery
>    Affects Versions: Discovery Base 2.0.10, Discovery Oak 1.2.34
>            Reporter: Joerg Hoh
>            Priority: Major
>
> While analysing the opening of ResourecResolvers in a running system, I came across the fact, that Oak Discovery opens (and closes) 2 ResourceResolvers to perform it's periodic validation.
> {noformat}
> at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.<init>(ResourceResolverImpl.java:109) [org.apache.sling.resourceresolver:1.7.10]
>  at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.<init>(ResourceResolverImpl.java:103) [org.apache.sling.resourceresolver:1.7.10]
>  at org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolverInternal(CommonResourceResolverFactoryImpl.java:273) [org.apache.sling.resourceresolver:1.7.10]
>  at org.apache.sling.resourceresolver.impl.ResourceResolverFactoryImpl.getServiceResourceResolver(ResourceResolverFactoryImpl.java:89) [org.apache.sling.resourceresolver:1.7.10]
>  at org.apache.sling.discovery.oak.cluster.OakClusterViewService.getResourceResolver(OakClusterViewService.java:104) [org.apache.sling.discovery.oak:1.2.34]
>  at org.apache.sling.discovery.oak.cluster.OakClusterViewService.getLocalClusterView(OakClusterViewService.java:114) [org.apache.sling.discovery.oak:1.2.34]
>  at org.apache.sling.discovery.base.commons.BaseDiscoveryService.getTopology(BaseDiscoveryService.java:77) [org.apache.sling.discovery.base:2.0.10]
>  at org.apache.sling.discovery.oak.OakDiscoveryService.checkForTopologyChange(OakDiscoveryService.java:678) [org.apache.sling.discovery.oak:1.2.34]
>  at org.apache.sling.discovery.oak.pinger.OakViewChecker.discoveryLiteCheck(OakViewChecker.java:217) [org.apache.sling.discovery.oak:1.2.34]
>  at org.apache.sling.discovery.oak.pinger.OakViewChecker.access$000(OakViewChecker.java:62) [org.apache.sling.discovery.oak:1.2.34]
>  at org.apache.sling.discovery.oak.pinger.OakViewChecker$1.run(OakViewChecker.java:193) [org.apache.sling.discovery.oak:1.2.34]
>  at org.apache.sling.discovery.base.commons.PeriodicBackgroundJob.safelyRun(PeriodicBackgroundJob.java:86) [org.apache.sling.discovery.base:2.0.10]
>  at org.apache.sling.discovery.base.commons.PeriodicBackgroundJob.run(PeriodicBackgroundJob.java:77) [org.apache.sling.discovery.base:2.0.10]
>  at java.base/java.lang.Thread.run(Thread.java:834)
> {noformat}
> and
> {noformat}
>         at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.<init>(ResourceResolverImpl.java:109) [org.apache.sling.resourceresolver:1.7.10]
>         at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.<init>(ResourceResolverImpl.java:103) [org.apache.sling.resourceresolver:1.7.10]
>         at org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolverInternal(CommonResourceResolverFactoryImpl.java:273) [org.apache.sling.resourceresolver:1.7.10]
>         at org.apache.sling.resourceresolver.impl.ResourceResolverFactoryImpl.getServiceResourceResolver(ResourceResolverFactoryImpl.java:89) [org.apache.sling.resourceresolver:1.7.10]
>         at org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistryImpl.listAnnouncementsInSameCluster(AnnouncementRegistryImpl.java:183) [org.apache.sling.discovery.base:2.0.10]
>         at org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistryImpl.listInstances(AnnouncementRegistryImpl.java:592) [org.apache.sling.discovery.base:2.0.10]
>         at org.apache.sling.discovery.base.commons.BaseDiscoveryService.getTopology(BaseDiscoveryService.java:93) [org.apache.sling.discovery.base:2.0.10]
>         at org.apache.sling.discovery.oak.OakDiscoveryService.checkForTopologyChange(OakDiscoveryService.java:678) [org.apache.sling.discovery.oak:1.2.34]
>         at org.apache.sling.discovery.oak.pinger.OakViewChecker.discoveryLiteCheck(OakViewChecker.java:217) [org.apache.sling.discovery.oak:1.2.34]
>         at org.apache.sling.discovery.oak.pinger.OakViewChecker.access$000(OakViewChecker.java:62) [org.apache.sling.discovery.oak:1.2.34]
>         at org.apache.sling.discovery.oak.pinger.OakViewChecker$1.run(OakViewChecker.java:193) [org.apache.sling.discovery.oak:1.2.34]
>         at org.apache.sling.discovery.base.commons.PeriodicBackgroundJob.safelyRun(PeriodicBackgroundJob.java:86) [org.apache.sling.discovery.base:2.0.10]
>         at org.apache.sling.discovery.base.commons.PeriodicBackgroundJob.run(PeriodicBackgroundJob.java:77) [org.apache.sling.discovery.base:2.0.10]
>         at java.base/java.lang.Thread.run(Thread.java:834)
> {noformat}
> In order to reduce the resource consumption of an otherwise idle system, it would be good if we could change the code so only 1 ResourceResolver is used.
> (And even that could be optimized for non-clustered cases: If we know that the repository is not able to be clustered, we know that the ClusterView is static and will not change over the runtime. In this case even the periodic read could be avoided.)
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)