[
https://issues.apache.org/jira/browse/SLING-6299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Julian Sedding updated SLING-6299:
----------------------------------
Attachment: SLING-6299-jsedding.patch
Proposed patch. [~teofili], [~simone.tripodi] could you please review? Thanks.
The change replaces a {{PriorityBlockingQueue}} with an {{ArrayBlockingQueue}},
thus theoretically changing the semantics. However, since
{{ServiceRegistration}} is not {{Comparable}} the current code could never have
worked, nor is an intention for some kind of "natural ordering" obvious.
Insertion order (i.e. FIFO) seems to make more sense afaics.
> SCD ClassCastException ServiceRegistration cannot be cast to Comparable
> -----------------------------------------------------------------------
>
> Key: SLING-6299
> URL: https://issues.apache.org/jira/browse/SLING-6299
> Project: Sling
> Issue Type: Bug
> Components: Distribution
> Affects Versions: Content Distribution Core 0.1.18
> Reporter: Julian Sedding
> Assignee: Julian Sedding
> Attachments: SLING-6299-jsedding.patch
>
>
> The following exception was observed:
> {noformat}
> java.lang.ClassCastException:
> org.apache.felix.framework.ServiceRegistrationImpl cannot be cast to
> java.lang.Comparable
> at
> java.util.concurrent.PriorityBlockingQueue.siftUpComparable(PriorityBlockingQueue.java:357)
> at
> java.util.concurrent.PriorityBlockingQueue.offer(PriorityBlockingQueue.java:489)
> at
> org.apache.sling.distribution.monitor.impl.MonitoringDistributionPackageBuilder.registerDistributionPackageMBean(MonitoringDistributionPackageBuilder.java:119)
> at
> org.apache.sling.distribution.monitor.impl.MonitoringDistributionPackageBuilder.createPackage(MonitoringDistributionPackageBuilder.java:65)
> at
> org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory.createPackage(VaultDistributionPackageBuilderFactory.java:260)
> at
> org.apache.sling.distribution.packaging.impl.exporter.LocalDistributionPackageExporter.exportPackages(LocalDistributionPackageExporter.java:45)
> at
> org.apache.sling.distribution.agent.impl.SimpleDistributionAgent.exportPackages(SimpleDistributionAgent.java:214)
> at
> org.apache.sling.distribution.agent.impl.SimpleDistributionAgent.execute(SimpleDistributionAgent.java:182)
> at
> org.apache.sling.distribution.servlet.DistributionAgentServlet.doPost(DistributionAgentServlet.java:62)
> at
> org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:149)
> at
> org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:346)
> {noformat}
> This is due to a violation of the contract of {{PriorityBlockingQueue}},
> which expects {{Comparable}} objects OR a {{Comparator}}.
> {{ServiceRegistration}} is not comparable.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)