[
https://issues.apache.org/jira/browse/OAK-5179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15714830#comment-15714830
]
Stefan Egli commented on OAK-5179:
----------------------------------
[~rombert], I agree with [~tomek.rekawek] in that the registerDescriptors way
is preferable over NodeProvider refactoring. I was just thinking if there's an
alternative to avoid the "{{Should only be done for one factory instance}}"
problem. That hints to the fact that one could misconfigure when setting the
registerDescriptor property on none or more than 1 node store. But the only
alternative that came to mind was to introduce a separate, perhaps called
'DescriptorConfig' config which would contain the name or role of the node
store factory which should register the descriptors. But perhaps that's not
making it much nicer really and your suggested 3rd approach
(registerDescriptors) is more intuitive.
> MultiplexingNodeStoreService does not register an OSGi service for
> oak.api.Descriptors
> --------------------------------------------------------------------------------------
>
> Key: OAK-5179
> URL: https://issues.apache.org/jira/browse/OAK-5179
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: core
> Reporter: Robert Munteanu
> Fix For: 1.5.15
>
> Attachments:
> 0001-OAK-5179-MultiplexingNodeStoreService-does-not-regis.patch,
> 0001-OAK-5179-MultiplexingNodeStoreService-does-not-regis.patch,
> 0001-OAK-5179-MultiplexingNodeStoreService-does-not-regis.patch
>
>
> When starting up Apache Sling with a MultiplexingNodeStore backend Sling's
> discovery mechanism fails to read the repository descriptors.
> {noformat}19.11.2016 13:43:06.101 *ERROR*
> [discovery.connectors.common.runner.331bcf42-1d0d-4b53-bf1f-c7e9df060758.discoveryLiteCheck]
> org.apache.sling.discovery.oak.cluster.OakClusterViewService
> getLocalClusterView: repository exception: java.lang.Exception: No Descriptor
> value available
> java.lang.Exception: No Descriptor value available
> at
> org.apache.sling.discovery.commons.providers.spi.base.DiscoveryLiteDescriptor.getDescriptorFrom(DiscoveryLiteDescriptor.java:45)
> at
> org.apache.sling.discovery.oak.cluster.OakClusterViewService.getLocalClusterView(OakClusterViewService.java:112)
> at
> org.apache.sling.discovery.base.commons.BaseDiscoveryService.getTopology(BaseDiscoveryService.java:77)
> at
> org.apache.sling.discovery.oak.OakDiscoveryService.checkForTopologyChange(OakDiscoveryService.java:657)
> at
> org.apache.sling.discovery.oak.pinger.OakViewChecker.discoveryLiteCheck(OakViewChecker.java:217)
> at
> org.apache.sling.discovery.oak.pinger.OakViewChecker.access$000(OakViewChecker.java:62)
> at
> org.apache.sling.discovery.oak.pinger.OakViewChecker$1.run(OakViewChecker.java:193)
> at
> org.apache.sling.discovery.base.commons.PeriodicBackgroundJob.safelyRun(PeriodicBackgroundJob.java:86)
> at
> org.apache.sling.discovery.base.commons.PeriodicBackgroundJob.run(PeriodicBackgroundJob.java:77)
> at java.lang.Thread.run(Thread.java:745){noformat}
> I noticed that these descriptors are registered as OSGi services for the
> other stores - Segment ( 'old' and tar ), Document.
> The MultiplexingNodeStoreService should register these as well.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)