[ 
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)

Reply via email to