ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Magda (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used
Date Wed, 23 Sep 2015 11:50:04 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14904378#comment-14904378
] 

Denis Magda edited comment on IGNITE-1272 at 9/23/15 11:49 AM:
---------------------------------------------------------------

Finished implementing support of custom class loaders by {{PortableMarshaller}}:
- user types are arranged by class loaders. This lets custom class loaders to reload classes
when needed;
- implemented {{onUndeploy(ClassLoader ldr)}} method. The method declaration was added to
{{AbstractMarshaller}}; 

As a result compute engine works fine over {{PortableMarshaller}} right know. Compute tasks'
classes are reloaded by the marshaller when a compute task's class version is changed.
Checking all the changes with TC.

What is left and should be fixed separately (probably as a part of other issue) is that {{PortableObjectImpl}}
doesn't support custom class loaders. It means that if it's needed to deserialize a portable
object then a node must have object's class in its classpath upon startup. The tests specified
in the description of this task are failing exactly because of this reason.


was (Author: dmagda):
Finished implementing support of custom class loaders by {{PortableMarshaller}}:
- user types are arranged by class loaders. This lets custom class loaders to reload classes
when needed;
- implemented {{onUndeploy(ClassLoader ldr)}} method. The method declaration was added to
{{AbstractMarshaller}}; 

As a result compute engine works fine over {{PortableMarshaller}} right know. Compute tasks'
classes are reloaded by the marshaller when a compute task's class version is changed.
Checking all the changes with TC.

What is left and should be fixed separately (probably as a part of other issue) is that {{PortableObjectImpl}}
doesn't support custom class loaders. It means that if it's needed to deserialize a portable
object then a node must have object's class in its classpath upon startup. The tests specified
in the description of this task are failing exactly because of this issue.

> PortableMarshaller: issues when different class loaders are used
> ----------------------------------------------------------------
>
>                 Key: IGNITE-1272
>                 URL: https://issues.apache.org/jira/browse/IGNITE-1272
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: ignite-1.4
>            Reporter: Denis Magda
>            Assignee: Denis Magda
>            Priority: Blocker
>             Fix For: ignite-1.5
>
>
> The reason is that a loader is not passed to required places when needed.
> Reproduced with the following tests:
> - {{IgniteCacheAbstractExecutionContextTest.testUserClassLoader()}} fails with PortableMarshaller
enabled.
> - {{GridDeploymentMessageCountSelfTest.testCacheValueDeploymentOnPut()}}
> Another issue is when {{PortableContext}} returns {{PortableClassDescriptor}} by type
id. Returned descriptor has a constructor which already has been loaded with another class
loader. Fix is not trivial and issue is reproduced with {{GridP2PRemoteClassLoadersSelfTest}}
> Look for corresponding TODOs in the code.
> Unmute tests when fixed



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message