Joerg Hoh created SLING-10882:
---------------------------------

             Summary: Oak 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 Oak 1.2.34, Discovery Base 2.0.10
            Reporter: Joerg Hoh


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