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

Anton Kalashnikov commented on IGNITE-11624:
--------------------------------------------

[~NSAmelchev] thanks for your changes. I left one comment into 
upsource(https://reviews.ignite.apache.org/ignite/review/IGNT-CR-1033?filePath=/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java).
 Can you check it out?

> Discovery SPI: The client can handle events from the previous cluster after 
> reconnect.
> --------------------------------------------------------------------------------------
>
>                 Key: IGNITE-11624
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11624
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Amelchev Nikita
>            Assignee: Amelchev Nikita
>            Priority: Major
>             Fix For: 2.8
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Discovery has a queue for events. It's processed by event thread. If we hold 
> up event processing using a listener on the client side and restarts cluster 
> - the client will reconnect. After it reconnects it will continue processing 
> events from the previous cluster. 
> This behavior produces bugs in MvccProcessor (IGNITE-11460) and [hanging of 
> partitions exchange|https://github.com/NSAmelchev/ignite/pull/26/files] on 
> the client side. The reason is that discovery notifies components about 
> reconnection in the notifier thread by calling the 'onLocalJoin' method. 
> After it (or at the same time), components can process events from the 
> previous cluster in their listeners and break their logic. 
> The order of events is fine - after processing previous cluster events - it 
> will process client disconnection/reconnection and new cluster events.
> The possible solution is to fix discovery logic. Make a guarantee that no one 
> event from the previous cluster will be processed after the client reconnect 
> ('onLocalJoin' called). For example, wait for the client disconnect event 
> will be processed in the discovery event thread. Then start attempt to 
> reconnect.
> [Dev-list 
> discussion.|http://apache-ignite-developers.2346864.n4.nabble.com/The-client-can-handle-events-from-the-previous-cluster-after-reconnect-td41392.html]
>  [Reproducer.|https://github.com/NSAmelchev/ignite/pull/26/files]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to