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