[ 
https://issues.apache.org/jira/browse/IGNITE-2947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denis Magda updated IGNITE-2947:
--------------------------------
    Comment: was deleted

(was: In addition to the above we should register classes 
{{BinaryTypeConfiguration}} for classes from different class loader (not only 
the one that belong to sys class loader or IgniteConfiguration.classLoader) 
meaning that the following {{if}} condition should be remove from line 1044 and 
the rest of the code where {{cacheTypes}} structure is used should be revisited 
{noformat}
            if (ldr.equals(sysLdr) || ldr.equals(cfgLdr))
                cacheDescriptor(id, desc, ldr);
{noformat})

> 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: Anton Vinogradov
>            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)

Reply via email to