[ https://issues.apache.org/jira/browse/IGNITE-11574?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16808828#comment-16808828 ]
Ivan Bessonov commented on IGNITE-11574: ---------------------------------------- License headers were broken in master at the moment of tests running. > Exchange on NodeLeft event hangs when cluster is in transition state > -------------------------------------------------------------------- > > Key: IGNITE-11574 > URL: https://issues.apache.org/jira/browse/IGNITE-11574 > Project: Ignite > Issue Type: Bug > Reporter: Ivan Bessonov > Assignee: Ivan Bessonov > Priority: Major > Fix For: 2.8 > > Attachments: ExchangeDeadlockTest.java > > Time Spent: 10m > Remaining Estimate: 0h > > The problem is in this code (GridCachePartitionExchangeManager#discoLsnr) : > {code:java} > if (cache.state().transition()) { > if (log.isDebugEnabled()) > log.debug("Adding pending event: " + evt); > pendingEvts.add(new PendingDiscoveryEvent(evt, cache)); > }{code} > Problem occurs when "setBaseline" and "nodeLeft" events happen simultaneously > (+ some undetermined conditions). > "nodeLeft" provokes exchange, and while that exchange isn't finished > "setBaseline" is invoked. This moves cluster into a transition state and > "CacheAffinityChangeMessage" from the exchange cannot be processed properly. > At the same time "setBaseline" cannot be completed before the exchange, so we > have a deadlock. > Reproducer attached. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)