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)