IGNITE-3386 Reverted: "Reentrant lock is lost when lock owner leaves topology"
Signed-off-by: nikolay_tikhonov <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d20f4588 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d20f4588 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d20f4588 Branch: refs/heads/ignite-5024 Commit: d20f4588f5b26ba7f36111329211e8ed6e4188dc Parents: a826c61 Author: nikolay_tikhonov <[email protected]> Authored: Thu Apr 20 18:25:35 2017 +0300 Committer: nikolay_tikhonov <[email protected]> Committed: Thu Apr 20 18:25:35 2017 +0300 ---------------------------------------------------------------------- .../src/main/java/org/apache/ignite/Ignite.java | 1 - .../datastructures/DataStructuresProcessor.java | 3 +- .../datastructures/GridCacheLockImpl.java | 17 +---- .../internal/GridCacheRecreateLockTest.java | 78 -------------------- .../testsuites/IgniteComputeGridTestSuite.java | 2 - 5 files changed, 3 insertions(+), 98 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/d20f4588/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 aba224f..d8addcd 100644 --- a/modules/core/src/main/java/org/apache/ignite/Ignite.java +++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java @@ -524,7 +524,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/d20f4588/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 0a439dc..eb0981b 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 @@ -1443,8 +1443,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter implemen name, key, reentrantLockView, - dsCacheCtx, - create); + dsCacheCtx); dsMap.put(key, reentrantLock0); http://git-wip-us.apache.org/repos/asf/ignite/blob/d20f4588/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 e154850..3f1a0dd 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 @@ -107,9 +107,6 @@ public final class GridCacheLockImpl implements GridCacheLockEx, IgniteChangeGlo /** 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, IgniteChangeGlo 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(); @@ -1051,14 +1041,12 @@ public final class GridCacheLockImpl implements GridCacheLockEx, IgniteChangeGlo * @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; @@ -1068,7 +1056,6 @@ public final class GridCacheLockImpl implements GridCacheLockEx, IgniteChangeGlo 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/d20f4588/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 cb1052c..0000000 --- a/modules/core/src/test/java/org/apache/ignite/internal/GridCacheRecreateLockTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -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 test() 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"); - } - - private Ignite startNodeAndLock(String name) { - try { - IgniteConfiguration cfg = new IgniteConfiguration(); - cfg.setIgniteInstanceName(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; - } - catch (Exception e) { - assertTrue(false); - } - - return null; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/d20f4588/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 ac98104..abd74b3 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; @@ -158,7 +157,6 @@ public class IgniteComputeGridTestSuite { suite.addTestSuite(IgniteRoundRobinErrorAfterClientReconnectTest.class); suite.addTestSuite(PublicThreadpoolStarvationTest.class); suite.addTestSuite(StripedExecutorTest.class); - suite.addTestSuite(GridCacheRecreateLockTest.class); return suite; }
