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

Reply via email to