[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14976099#comment-14976099 ] Denis Magda commented on IGNITE-1272: - Merged to the master 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: 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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14954441#comment-14954441 ] Denis Magda commented on IGNITE-1272: - Semen, please review cache related changes. Val has already reviewed the changes that affect portable marshaller. > 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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14905878#comment-14905878 ] Denis Magda commented on IGNITE-1272: - Please review. > 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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14905831#comment-14905831 ] 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=106813 - Ignite AOP 02. http://204.14.53.153/viewQueued.html?itemId=106814 - Ignite Basic 03. http://204.14.53.153/viewQueued.html?itemId=106815 - Ignite Cache 04. http://204.14.53.153/viewQueued.html?itemId=106816 - Ignite Cache 2 05. http://204.14.53.153/viewQueued.html?itemId=106817 - Ignite Cache 3 06. http://204.14.53.153/viewQueued.html?itemId=106818 - Ignite Cache 4 07. http://204.14.53.153/viewQueued.html?itemId=106819 - Ignite Cache Expiry Policy 08. http://204.14.53.153/viewQueued.html?itemId=106820 - Ignite Cache Failover 09. http://204.14.53.153/viewQueued.html?itemId=106821 - Ignite Cache Failover Multi JVM 10. http://204.14.53.153/viewQueued.html?itemId=106822 - Ignite Cache Failover2 11. http://204.14.53.153/viewQueued.html?itemId=106823 - Ignite Cache Full API 12. http://204.14.53.153/viewQueued.html?itemId=106824 - Ignite Cache Full API Multi JVM 13. http://204.14.53.153/viewQueued.html?itemId=106825 - Ignite Cache Full API Portable 14. http://204.14.53.153/viewQueued.html?itemId=106826 - Ignite Cache Portable 15. http://204.14.53.153/viewQueued.html?itemId=106827 - Ignite Cache Query Portable 16. http://204.14.53.153/viewQueued.html?itemId=106828 - Ignite Cache Restarts 17. http://204.14.53.153/viewQueued.html?itemId=106829 - Ignite Cache Tx Recovery 18. http://204.14.53.153/viewQueued.html?itemId=106830 - Ignite Cloud 19. http://204.14.53.153/viewQueued.html?itemId=106831 - Ignite Compute Grid 20. http://204.14.53.153/viewQueued.html?itemId=106832 - Ignite Data Strucutures 21. http://204.14.53.153/viewQueued.html?itemId=106833 - Ignite Examples 22. http://204.14.53.153/viewQueued.html?itemId=106834 - Ignite GCE 23. http://204.14.53.153/viewQueued.html?itemId=106835 - Ignite Geospacial Indexing 24. http://204.14.53.153/viewQueued.html?itemId=106836 - Ignite H2 Indexing 25. http://204.14.53.153/viewQueued.html?itemId=106837 - Ignite Hadoop 26. http://204.14.53.153/viewQueued.html?itemId=106838 - Ignite Hibernate 27. http://204.14.53.153/viewQueued.html?itemId=106839 - Ignite IGFS 28. http://204.14.53.153/viewQueued.html?itemId=106840 - Ignite IGFS Examples 29. http://204.14.53.153/viewQueued.html?itemId=106841 - Ignite IGFS Linux and MacOS 30. http://204.14.53.153/viewQueued.html?itemId=106842 - Ignite Java Client 31. http://204.14.53.153/viewQueued.html?itemId=106843 - Ignite JDBC Driver 32. http://204.14.53.153/viewQueued.html?itemId=106844 - Ignite JTA 33. http://204.14.53.153/viewQueued.html?itemId=106845 - Ignite Logging 34. http://204.14.53.153/viewQueued.html?itemId=106846 - Ignite Portables Basic 35. http://204.14.53.153/viewQueued.html?itemId=106847 - Ignite Queries 36. http://204.14.53.153/viewQueued.html?itemId=106848 - Ignite Scalar Examples 37. http://204.14.53.153/viewQueued.html?itemId=106849 - Ignite SPI 38. http://204.14.53.153/viewQueued.html?itemId=106850 - Ignite Spring 39. http://204.14.53.153/viewQueued.html?itemId=106851 - Ignite Start Nodes 40. http://204.14.53.153/viewQueued.html?itemId=106852 - Ignite URI Deploy SPI 41. http://204.14.53.153/viewQueued.html?itemId=106853 - Ignite Visor Console 42. http://204.14.53.153/viewQueued.html?itemId=106854 - Ignite WebSessions 43. http://204.14.53.153/viewQueued.html?itemId=106855 - 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 > > > 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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14904378#comment-14904378 ] Denis Magda commented on IGNITE-1272: - Finished implementing support of custom class loader 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)
[jira] [Commented] (IGNITE-1272) PortableMarshaller: issues when different class loaders are used
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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
[ https://issues.apache.org/jira/browse/IGNITE-1272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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)