[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-27 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Implemented such behavior. Please take a look at commit 
'006a6fb238685e177964791e4b82b13fd931cc6b'

> 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: 1.5
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-27 Thread Semen Boikov (JIRA)

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

Semen Boikov commented on IGNITE-1272:
--

Looks good to merge.

> 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: 1.5
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-26 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Did the following changes:
- every deployable {{CacheMessage}} has to initialize {{addDepInfo}} variable. 
Basing on the value of this variable deployment info is either added or not 
during serialization;
- added tests for {{EntryProcessor}}. Fixed implementation when 
{{PortableMarshaller}} is used.

Semen, please take a look one more time. TC looks good.

> 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: 1.5
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-26 Thread Semen Boikov (JIRA)

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

Semen Boikov commented on IGNITE-1272:
--

Denis,

I don't like that if message contains EntryProcessor then 'addDepInfo' is set 
to 'true' for all objects in the message (and e.g. 'prepareObject' will be 
unnecessarily called for keys), I think it is better to initialize 'addDepInfo' 
flag inside 'prepareMarshal' method.

> 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: Semen Boikov
>Priority: Blocker
> Fix For: 1.5
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-22 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Semen,

> I remember that it was discussed that peer class loading should work for 
> cache EntryProcessors. Are there such tests?

I haven't found such tests. If they were then my changes would break peer class 
loading for EntryProcessors for cases when a processor is invoked over a 
portable cache. Thanks for this finding.  

> Is it possible to change all cache messages to return non-null 
> addDeploymentInfo() flag to avoid extra cheks in GridCacheIoManager?

I can initialize this flag for every existed cache message and even avoid usage 
of {{ctx.cacheContext(cacheId).deploymentEnabled()}} inside of messages logic.
However, I would prefer to keep {{addDepInfo}} flag as {{Boolean}} variable 
forcing every cache message to initialize it to a particular value. The reason 
is that in the future we may want to add additional cache messages and an 
implementor of the new message will get an error or assertion if he/she forgets 
to initialize this flag.

What do you think?

> Also I fixed few places to avoid extra cache contex lookups, please take a 
> look (commit 344bf0c)

Thanks, looks good.

> 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: 1.5
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-12 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Fixed and reworked the test of the test that are mentioned in this ticket 
except 7 failing tests from newly added Compute Test Suite.

These tests are not critical and should be reviewed and fixed separately.

> 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: 1.5
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-09 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

TC looks good.

However, activated the following test suites for {{PortableMarshaller}}. Need 
to fix them. Doesn't make sense to open separate JIRA issue. The tests fail on 
master's source code version as well:
- GridCacheDeploymentSelfTest;
- GridCacheDeploymentOffHeapSelfTest;
- Compute Test Suite (7 failling tests);

> 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: 1.5
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-07 Thread tc_commenter (JIRA)

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

tc_commenter commented on IGNITE-1272:
--

There was triggered next test builds for last attached patch-file:
01. http://204.14.53.153/viewQueued.html?itemId=109331 - Ignite AOP
02. http://204.14.53.153/viewQueued.html?itemId=109332 - Ignite Basic
03. http://204.14.53.153/viewQueued.html?itemId=109333 - Ignite Cache
04. http://204.14.53.153/viewQueued.html?itemId=109334 - Ignite Cache 2
05. http://204.14.53.153/viewQueued.html?itemId=109335 - Ignite Cache 3
06. http://204.14.53.153/viewQueued.html?itemId=109336 - Ignite Cache 4
07. http://204.14.53.153/viewQueued.html?itemId=109337 - Ignite Cache Expiry 
Policy
08. http://204.14.53.153/viewQueued.html?itemId=109338 - Ignite Cache Failover
09. http://204.14.53.153/viewQueued.html?itemId=109339 - Ignite Cache Failover 
Multi JVM
10. http://204.14.53.153/viewQueued.html?itemId=109340 - Ignite Cache Failover2
11. http://204.14.53.153/viewQueued.html?itemId=109341 - Ignite Cache Full API
12. http://204.14.53.153/viewQueued.html?itemId=109342 - Ignite Cache Full API 
Multi JVM
13. http://204.14.53.153/viewQueued.html?itemId=109343 - Ignite Cache Full API 
Portable
14. http://204.14.53.153/viewQueued.html?itemId=109344 - Ignite Cache Portable
15. http://204.14.53.153/viewQueued.html?itemId=109345 - Ignite Cache Query 
Portable
16. http://204.14.53.153/viewQueued.html?itemId=109346 - Ignite Cache Restarts
17. http://204.14.53.153/viewQueued.html?itemId=109347 - Ignite Cache Tx 
Recovery
18. http://204.14.53.153/viewQueued.html?itemId=109348 - Ignite Cloud
19. http://204.14.53.153/viewQueued.html?itemId=109349 - Ignite Compute Grid
20. http://204.14.53.153/viewQueued.html?itemId=109350 - Ignite Data Strucutures
21. http://204.14.53.153/viewQueued.html?itemId=109351 - Ignite Examples
22. http://204.14.53.153/viewQueued.html?itemId=109352 - Ignite GCE
23. http://204.14.53.153/viewQueued.html?itemId=109353 - Ignite Geospacial 
Indexing
24. http://204.14.53.153/viewQueued.html?itemId=109354 - Ignite H2 Indexing
25. http://204.14.53.153/viewQueued.html?itemId=109355 - Ignite Hadoop
26. http://204.14.53.153/viewQueued.html?itemId=109356 - Ignite Hibernate
27. http://204.14.53.153/viewQueued.html?itemId=109357 - Ignite IGFS
28. http://204.14.53.153/viewQueued.html?itemId=109358 - Ignite IGFS Examples
29. http://204.14.53.153/viewQueued.html?itemId=109359 - Ignite IGFS Linux and 
MacOS
30. http://204.14.53.153/viewQueued.html?itemId=109360 - Ignite Java Client
31. http://204.14.53.153/viewQueued.html?itemId=109361 - Ignite JDBC Driver
32. http://204.14.53.153/viewQueued.html?itemId=109362 - Ignite JTA
33. http://204.14.53.153/viewQueued.html?itemId=109363 - Ignite Logging
34. http://204.14.53.153/viewQueued.html?itemId=109364 - Ignite Portables Basic
35. http://204.14.53.153/viewQueued.html?itemId=109365 - Ignite Queries
36. http://204.14.53.153/viewQueued.html?itemId=109366 - Ignite Scalar Examples
37. http://204.14.53.153/viewQueued.html?itemId=109367 - Ignite SPI
38. http://204.14.53.153/viewQueued.html?itemId=109368 - Ignite Spring
39. http://204.14.53.153/viewQueued.html?itemId=109369 - Ignite Start Nodes
40. http://204.14.53.153/viewQueued.html?itemId=109370 - Ignite URI Deploy SPI
41. http://204.14.53.153/viewQueued.html?itemId=109371 - Ignite Visor Console
42. http://204.14.53.153/viewQueued.html?itemId=109372 - Ignite WebSessions
43. http://204.14.53.153/viewQueued.html?itemId=109373 - JCache TCK


> 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
>
> Attachments: ignite-1272.patch, ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-10-06 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Custom class loaders won't be supported for {{PortableObject}} because it was 
designed for absolutely different use cases.
It means that we can ignore/skip the rest of failing tests for 
{{PortableMarshaller}} and should omit sending deployment info for caches that 
store portable objects.

Currently did the following:
- set {{deploymentEnabled}} flag per {{GridCacheContext}} and 
{{CacheObjectContext}};
- modified the code that used {{GridCacheSharedContext.deploymentEnabled()}} in 
a way to use {{GridCacheContext.deploymentEnabled()}};

Run some basic tests. The tests are failing because not all 
{{GridCacheMessages}} have properly set {{cacheId}} that is used to get a valid 
{{GridCacheContext}} in some places.
So what is left is to find those message for which it's obligatory to set valid 
{{cacheId}} and use it whenever it's needed.

> 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
>
> Attachments: ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-09-29 Thread Valentin Kulichenko (JIRA)

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

Valentin Kulichenko commented on IGNITE-1272:
-

Denis,

I'm not sure I understood the purpose of {{descriptorLoadingFailover(...)}} 
method. Can you please provide details? Also why you get the descriptor from 
the {{userTypes}} map, but return it only if was loaded by default loader? Why 
do we need it in this map then?

Thanks!

> 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: Valentin Kulichenko
>Priority: Blocker
> Fix For: ignite-1.5
>
> Attachments: ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-09-29 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Val, thanks for the review.

1) Also why you get the descriptor from the userTypes map, but return it only 
if was loaded by default loader?

Because if it's a custom class loader like {{GridDeploymentClassLoader}} we 
have to give him a chance to reload a class. It least this is required for 
compute engine to be fully workable in conjunction with {{PortableMarshaller}}.

2) Why do we need it in this map then?

We store class descriptors of custom class loaders in a map for cases when it 
wasn't possible to load a class from the cache ({{marshCtx.getClass}}).
It may happen when during serialization we don't manage to register it in the 
cache {{registered = marshCtx.registerClass(typeId, cls)}} and write full class 
name into the serialization form. When it's time to deserialize such a object 
we won't be able to get its class from {{marshCtx.getClass}} but will be able 
from {{userTypes}}.

3) I'm not sure I understood the purpose of {{descriptorLoadingFailover(...)}} 
method. 

First, it's is needed for the reason described in 2).

Second. The user may register types with {{PortableTypeConfiguration}}. Most 
likely class descriptors registered this way will be bound to default class 
loader in {{userTypes}}.
Then there can be a case when {{CacheClassLoader}} tries to deserialize on 
object of a type registered with {{PortableTypeConfiguration}}. 
{{CacheClassLoader}} won't be able to load this class (it seems that it doesn't 
perform lookup in the classpath) and {{descriptorLoadingFailover(...)}} will 
try to find class descriptor using the default class loader.

> 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
>
> Attachments: ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-09-28 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Val, please review the changes. Use branches named ignite-1272.

> 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: Valentin Kulichenko
>Priority: Blocker
> Fix For: ignite-1.5
>
> Attachments: ignite-1272.patch
>
>
> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-09-22 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Improved the fix for compute engine's class loader in order to recover other 
broken tests. Now compute engine is able to reload a class if its version is 
changed.
Checked the fix with {{GridPortableObjectsTestSuite}} locally, everything looks 
fine.

What is left is to fix the following tests:
- {{GridDeploymentMessageCountSelfTest.testCacheValueDeploymentOnPut()}};
- {{IgniteCacheAbstractExecutionContextTest.testUserClassLoader() fails with 
PortableMarshaller enabled}}

They both should failing because of the issue in {{PortableObjectImpl}} I'm 
talking above.


> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-09-22 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

In addition investigated 
{{GridDeploymentMessageCountSelfTest.testCacheValueDeploymentOnPut()}}.

It fails because {{PortableObjectImpl.deserialize()}} method doesn't have a 
reference to a valid class loader and just passes {{null}} to 
{{PortableMarshaller}}.

All the changes are located on ignite-1272 branch.

> 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)


[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used

2015-09-22 Thread Denis Magda (JIRA)

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

Denis Magda commented on IGNITE-1272:
-

Fixed the following test case:
- start server node from console with peer class loading enabled;
- start client node that executes a compute task. Stop the client node;
- modify source code of the compute task and start the client node one more 
time;
- the server node will reload the changed compute task.

This reason of the bug was in the fact that we always cached class in 
{{PortableContext}} didn't giving the remote loader a chance to reload it using 
{{MarshallerContextImpl}}.

However, this fix broke other portable marshaller tests. Need to investigate 
and introduce better solution.

> 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)