IGNITE-3386 Reverted: "Reentrant lock is lost when lock owner leaves topology"
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6633da64 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6633da64 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6633da64 Branch: refs/heads/ignite-4565-ddl Commit: 6633da64d57eadacf30bf437a9c3a3d205903dcd Parents: 590b82d Author: nikolay_tikhonov <[email protected]> Authored: Tue Mar 14 16:40:58 2017 +0300 Committer: nikolay_tikhonov <[email protected]> Committed: Tue Mar 14 16:40:58 2017 +0300 ---------------------------------------------------------------------- .../src/main/java/org/apache/ignite/Ignite.java | 1 - .../datastructures/DataStructuresProcessor.java | 3 +- .../datastructures/GridCacheLockImpl.java | 17 +----- .../internal/GridCacheRecreateLockTest.java | 58 -------------------- .../testsuites/IgniteComputeGridTestSuite.java | 2 - 5 files changed, 3 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/6633da64/modules/core/src/main/java/org/apache/ignite/Ignite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java b/modules/core/src/main/java/org/apache/ignite/Ignite.java index 7f8974c..0de08d5 100644 --- a/modules/core/src/main/java/org/apache/ignite/Ignite.java +++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java @@ -527,7 +527,6 @@ public interface Ignite extends AutoCloseable { * all threads on other nodes waiting to acquire lock are interrupted. * @param fair If {@code True}, fair lock will be created. * @param create Boolean flag indicating whether data structure should be created if does not exist. - * Will re-create lock if the node that stored the lock left topology and there are no backups left. * @return ReentrantLock for the given name. * @throws IgniteException If reentrant lock could not be fetched or created. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/6633da64/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java index 698efd9..1cad22f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java @@ -1396,8 +1396,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter { name, key, reentrantLockView, - dsCacheCtx, - create); + dsCacheCtx); dsMap.put(key, reentrantLock0); http://git-wip-us.apache.org/repos/asf/ignite/blob/6633da64/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java index 1cf78fa..3ab7289 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java @@ -105,9 +105,6 @@ public final class GridCacheLockImpl implements GridCacheLockEx, Externalizable /** Flag indicating that every operation on this lock should be interrupted. */ private volatile boolean interruptAll; - /** Re-create flag. */ - private volatile boolean reCreate; - /** * Empty constructor required by {@link Externalizable}. */ @@ -525,14 +522,7 @@ public final class GridCacheLockImpl implements GridCacheLockEx, Externalizable GridCacheLockState val = lockView.get(key); if (val == null) - if (reCreate) { - val = new GridCacheLockState(0, ctx.nodeId(), 0, failoverSafe, fair); - - lockView.put(key, val); - } - else - throw new IgniteCheckedException("Failed to find reentrant lock with " + - "the given name: " + name); + throw new IgniteCheckedException("Failed to find reentrant lock with given name: " + name); final long newThreadID = newThread.getId(); @@ -1058,14 +1048,12 @@ public final class GridCacheLockImpl implements GridCacheLockEx, Externalizable * @param key Reentrant lock key. * @param lockView Reentrant lock projection. * @param ctx Cache context. - * @param reCreate If {@code true} reentrant lock will be re-created in case it is not in cache. */ @SuppressWarnings("unchecked") public GridCacheLockImpl(String name, GridCacheInternalKey key, IgniteInternalCache<GridCacheInternalKey, GridCacheLockState> lockView, - GridCacheContext ctx, - boolean reCreate) { + GridCacheContext ctx) { assert name != null; assert key != null; assert ctx != null; @@ -1075,7 +1063,6 @@ public final class GridCacheLockImpl implements GridCacheLockEx, Externalizable this.key = key; this.lockView = lockView; this.ctx = ctx; - this.reCreate = reCreate; log = ctx.logger(getClass()); } http://git-wip-us.apache.org/repos/asf/ignite/blob/6633da64/modules/core/src/test/java/org/apache/ignite/internal/GridCacheRecreateLockTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridCacheRecreateLockTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridCacheRecreateLockTest.java deleted file mode 100644 index ae850f7..0000000 --- a/modules/core/src/test/java/org/apache/ignite/internal/GridCacheRecreateLockTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.apache.ignite.internal; - -import org.apache.ignite.Ignite; -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.IgniteLock; -import org.apache.ignite.Ignition; -import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; -import org.apache.ignite.testframework.junits.common.GridCommonTest; - -/** - * Create lock after owner node left topology test - */ -@GridCommonTest(group = "Kernal Self") -public class GridCacheRecreateLockTest extends GridCommonAbstractTest { - /** - * @throws IgniteCheckedException If failed. - */ - public void testLockOwnerLeavesGrid() throws Exception { - final Ignite ignite = startNodeAndLock("node1"); - - new Thread(new Runnable() { - @Override public void run() { - try { - Thread.sleep(2000); - } - catch (InterruptedException e) { - e.printStackTrace(); - } - - ignite.close(); - } - }).start(); - - startNodeAndLock("node2"); - } - - /** - * @param name Grid name. - * @return Started Ignite instance. - */ - private Ignite startNodeAndLock(String name) throws Exception { - IgniteConfiguration cfg = new IgniteConfiguration(); - cfg.setGridName(name); - - Ignite ignite = Ignition.start(cfg); - - IgniteLock lock = ignite.reentrantLock("lock", true, true, true); - - System.out.println("acquiring lock"); - - lock.lock(); - - System.out.println("acquired lock"); - - return ignite; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/6633da64/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java index 7c8b6a9..8a501fd 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java @@ -22,7 +22,6 @@ import org.apache.ignite.internal.ClusterNodeMetricsSelfTest; import org.apache.ignite.internal.GridAffinityNoCacheSelfTest; import org.apache.ignite.internal.GridAffinitySelfTest; import org.apache.ignite.internal.GridAlwaysFailoverSpiFailSelfTest; -import org.apache.ignite.internal.GridCacheRecreateLockTest; import org.apache.ignite.internal.GridCancelOnGridStopSelfTest; import org.apache.ignite.internal.GridCancelUnusedJobSelfTest; import org.apache.ignite.internal.GridCancelledJobsMetricsSelfTest; @@ -153,7 +152,6 @@ public class IgniteComputeGridTestSuite { suite.addTestSuite(TaskNodeRestartTest.class); suite.addTestSuite(IgniteRoundRobinErrorAfterClientReconnectTest.class); suite.addTestSuite(PublicThreadpoolStarvationTest.class); - suite.addTestSuite(GridCacheRecreateLockTest.class); return suite; }
