[ 
https://issues.apache.org/jira/browse/OAK-5179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15705801#comment-15705801
 ] 

Robert Munteanu commented on OAK-5179:
--------------------------------------

The {{MultiplexingNodeStoreService}} does not have a lot of knowledge about 
what the node stores that it multiplexes are. And I also see that the 
{{SegmentDiscoveryLiteDescriptors}} class is package-private, for good reason. 

I think a good rule of the thumb is that the  primary node store ( Segment or 
Document ) should decide what descriptors are registered, the other mount 
probably have nothing to say about clustering and are intended to be local and 
read-only. That's why I was suggesting that the component registering the 
primary node store service handle this. I don't think that multiplexing should 
expose a different descriptor for discovery, based on my limited understanding 
of how discovery works.

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

Reply via email to