Amelchev Nikita created IGNITE-11624:
----------------------------------------

             Summary: 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
             Fix For: 2.8


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