You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Julian Sedding (JIRA)" <ji...@apache.org> on 2016/11/17 11:54:58 UTC
[jira] [Updated] (SLING-6299) SCD ClassCastException
ServiceRegistration cannot be cast to Comparable
[ 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)