[ https://issues.apache.org/jira/browse/IGNITE-10?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yakov Zhdanov updated IGNITE-10: -------------------------------- Description: Current solution: serialize grid name, then find comp by name on peer. Current solution not working: in our internal unit tests, in distributed topology when user gives different names to nodes New solution: each grid thread should know its node. So, on deserialization we cast thread to e.g. IgniteThread and take its holding component from it. If it is not IgniteThread then exception should be thrown since it is anyway impossible to deserialize component outside of context. Suggestion from IGNITE-553: As we moving to java8 lambdas, it is impossible to use @IgniteInstanceResource in lambdas. As a result, single-jvm ping-pong test does not work. Suggested fix: Introduce a static thread-local field which will be set before processing a message and will be nullified after message is processed. IgniteKernal should check this thread-local in readResolve and return this instance. was: Current solution: serialize grid name, then find comp by name on peer. Current solution not working: in our internal unit tests, in distributed topology when user gives different names to nodes New solution: each grid thread should know its node. So, on deserialization we cast thread to e.g. IgniteThread and take its holding component from it. If it is not IgniteThread then exception should be thrown since it is anyway impossible to deserialize component outside of context. > Fix ignite components [de]serialization > --------------------------------------- > > Key: IGNITE-10 > URL: https://issues.apache.org/jira/browse/IGNITE-10 > Project: Ignite > Issue Type: Task > Components: general > Reporter: Yakov Zhdanov > Assignee: Anton Vinogradov > Fix For: sprint-4 > > > Current solution: serialize grid name, then find comp by name on peer. > Current solution not working: in our internal unit tests, in distributed > topology when user gives different names to nodes > New solution: each grid thread should know its node. So, on deserialization > we cast thread to e.g. IgniteThread and take its holding component from it. > If it is not IgniteThread then exception should be thrown since it is anyway > impossible to deserialize component outside of context. > Suggestion from IGNITE-553: > As we moving to java8 lambdas, it is impossible to use > @IgniteInstanceResource in lambdas. As a result, single-jvm ping-pong test > does not work. > Suggested fix: > Introduce a static thread-local field which will be set before processing a > message and will be nullified after message is processed. IgniteKernal should > check this thread-local in readResolve and return this instance. -- This message was sent by Atlassian JIRA (v6.3.4#6332)