[ https://issues.apache.org/jira/browse/IGNITE-11624?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16921418#comment-16921418 ]
Aleksey Plekhanov commented on IGNITE-11624: -------------------------------------------- [~NSAmelchev] looks good to me now. [~akalashnikov], I have plans to merge this patch, do you have any objections? > 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 (v8.3.2#803003)