[ https://issues.apache.org/jira/browse/IGNITE-4908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Menshikov updated IGNITE-4908: ---------------------------------------- Comment: was deleted (was: Current status of the task: The reviewer [~NIzhikov] thinks the PR is not ready for merge because I should implement "Conditions" and also new lock should work 100% exactly like the current reentrant lock (including nonspecified behavers). Also, the author of solution design [~avinogradov] now thinks his design is not good enough and should be redesign. So, I stopped working on the task for a while.) > Ignite.reentrantLock looks much slower than IgniteCache.lock. > ------------------------------------------------------------- > > Key: IGNITE-4908 > URL: https://issues.apache.org/jira/browse/IGNITE-4908 > Project: Ignite > Issue Type: Improvement > Components: data structures > Affects Versions: 1.8 > Reporter: Andrew Mashenkov > Assignee: Alexander Menshikov > Priority: Major > > Design discussed with Alexander: > 1) Lock > Entry Processor (sync) -> > ....add candidate. > ....returns "added candidate at first position" > ....retry failover -> > ........if already at first position -> return true > In case lock not acquired, wait for acquire (AbstractQueuedSynchronizer > should be used). > 2) Unlock > Entry Processor (async) -> > ....remove candidate at first position > ....retry failover -> remove only if "candidate at first position" equals to > expected > ....listener -> > ........notify current "candidate at first position" it got lock > 3)Failover > 3.1) Originating node failed > Failed node listener -> > ....For each local(primary) lock -> > ........Entry Processor (async) -> > ............remove candidates related no failed node > ............retry failover not needed > ............listener -> > ................if "candidate at first position" removed -> > ....................notify current "candidate at first position" it got lock > 3.2) Primary node failed > After rebalancing schedule Callable -> > ....For each local(primary) lock -> > ........Entry Processor (async) -> > ............remove candidates related to failed nodes > ............retry failover not needed > ............listener -> > ................notify current "candidate at first position" it got lock -- This message was sent by Atlassian JIRA (v7.6.3#76005)