[ https://issues.apache.org/jira/browse/SLING-9210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17061047#comment-17061047 ]
Carsten Ziegeler commented on SLING-9210: ----------------------------------------- The point is, the OSGi framework resolves bundles taking the whole class space into account; it uses export/import package statements together with uses constraints to try to get a consistent space. But this is only possible - if at all - if you now all the imports of the script at once and then its possible to resolve against the providing bundles. So its not about a missing version information on an import; its a) how we do the class loading (one class after the one) and b) we're not taking the existing class space into account (and uses constraints from exporting bundles). And on top of that, we assume that all scripts can happyily resolve in the same class space - which is not true in general either. Bottom line, this was never taken into account when designing the mechanism - it doesn't work today if multiple bundles provide the same packages and it will not by making it deterministic. I'm not against making it deterministic, but I also want to highlight that this does not solve the underlying problem - and this problem exists today without using SLING-9172 > Make DynamicClassloader behave deterministically in case several bundles > export the same package > ------------------------------------------------------------------------------------------------ > > Key: SLING-9210 > URL: https://issues.apache.org/jira/browse/SLING-9210 > Project: Sling > Issue Type: Improvement > Affects Versions: Commons ClassLoader 1.4.4 > Reporter: Konrad Windszus > Priority: Major > Fix For: Commons ClassLoader 1.4.6 > > > Currently in case several bundles export the same package (in different > versions) the first one is being picked in > https://github.com/apache/sling-org-apache-sling-commons-classloader/blob/dedb69a9fb0f8cb2ebf3050560311739b9f00ce4/src/main/java/org/apache/sling/commons/classloader/impl/PackageAdminClassLoader.java#L156, > but it is not described which one is the first one in > https://osgi.org/javadoc/r6/core/org/osgi/service/packageadmin/PackageAdmin.html#getExportedPackages(org.osgi.framework.Bundle). > Given that now it is possible to install the same bundle in multiple version > (SLING-9172 and FELIX-6232) a better, more predictable logic should be chosen. > I propose to always pick the highest exported version. -- This message was sent by Atlassian Jira (v8.3.4#803005)