[ https://issues.apache.org/jira/browse/IGNITE-2947?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15270890#comment-15270890 ]
Denis Magda commented on IGNITE-2947: ------------------------------------- - Added the test that fails when IgniteConfiguration.classLoader behaves like an OSGI sweeping class loader - Setting "registered" flag to false for class descriptors of types passed through BinaryTypeConfiguration. Fixed the bug with OSGi like sweeping class loader; However, there are some other weak places in the code that may not work with OSGi like class loaders. Need more time for investigation and fixing. > BinaryContext doesn't honor custom loader set through > IgniteConfiguration.classLoader > ------------------------------------------------------------------------------------- > > Key: IGNITE-2947 > URL: https://issues.apache.org/jira/browse/IGNITE-2947 > Project: Ignite > Issue Type: Bug > Components: binary > Affects Versions: 1.5.0.final > Reporter: Denis Magda > Assignee: Denis Magda > Priority: Critical > Labels: community, important > Fix For: 1.6 > > > If to register a specific object with {{BinaryTypeConfiguration}} setting its > {{typeName}} and load Class of objects of this type using a custom class > loader passed to {{IgniteConfiguration.classLoader}} then at > {{BinaryContext}} initialization time the context will not properly register > this {{BinaryTypeConfiguration}} because it doesn't suppose that the Class of > the type can be loaded by the custom class loader > In the code below {{Class.forName}} has to use > {{IgniteConfiguration.classLoader}} if the latest is set and fall back to > {{dfltLdr}} otherwise. > {noformat} > @SuppressWarnings("ErrorNotRethrown") > public void registerUserType(String clsName, > BinaryInternalMapper mapper, > @Nullable BinarySerializer serializer, > @Nullable String affKeyFieldName, > boolean isEnum) > throws BinaryObjectException { > assert mapper != null; > Class<?> cls = null; > try { > cls = Class.forName(clsName); > } > catch (ClassNotFoundException | NoClassDefFoundError ignored) { > // No-op. > } > {noformat} > Also there are several conditions in {{BinaryContext}} that are done for > {{dfltLdr}}. The same conditions have to be executed for > {{IgniteConfiguration.classLoader}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)