As I described before, one of the reasons behind the waiting is to switch primary nodes to prevent two simultaneous lock owners.
Consider the following scenario: * Client node c1 acquired a lock L1 on node A * Topology changes and primary node for L1 is now new joined node B * Client node c2 wants to acquire lock L1 and sends lock request to B * Node B successfully grants the lock to c2 because it does not know about the previous lock * Two threads now hold the lock There is a theoretical possibility of transferring lock ownership information during rebalancing, but this opens up whole lot new race conditions and failover difficulties. 2017-05-19 12:52 GMT+03:00 Дмитрий Рябов <[email protected]>: > May be let second node to finish join and enter the ring, but start > rebalance after all lock will be released. > > 2017-05-19 12:30 GMT+03:00 ALEKSEY KUZNETSOV <[email protected]>: > > > If we acquired a lock and a new node is joining cluster, should it wait > for > > lock release? > > May be it could proceed joining ? > > The question comes from my ticket > > https://issues.apache.org/jira/browse/IGNITE-2671 > > > > чт, 18 мая 2017 г. в 20:05, Alexey Goncharuk <[email protected] > >: > > > > > Hi Aleksey, > > > > > > The main purpose of this method is to wait for all ongoing updates > > > (transactional and atomic), initiated on the previous topology version, > > to > > > finish to prevent inconsistencies during rebalancing and to prevent two > > > different simultaneous owners of the same lock. > > > > > > We will be adding documentation pages on Apache Ignite wiki which will > > > explain transactions mechanics in greater detail. > > > > > > Hope this helps, > > > AG > > > > > > 2017-05-18 16:50 GMT+03:00 ALEKSEY KUZNETSOV <[email protected] > >: > > > > > > > Hi Igntrs! > > > > What is the point of waiting partition release in the end of > > > > GridDhtPartitionsExchangeFuture#init() method ? > > > > In what scenarious do we need it ? > > > > -- > > > > > > > > *Best Regards,* > > > > > > > > *Kuznetsov Aleksey* > > > > > > > > > -- > > > > *Best Regards,* > > > > *Kuznetsov Aleksey* > > >
