This is an automated email from the ASF dual-hosted git repository.
zhaojinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 3509397f210 Optimize distributed lock context add lock scope (#18831)
3509397f210 is described below
commit 3509397f2107edbd9827c4855d22227e2a10b65e
Author: gin <[email protected]>
AuthorDate: Tue Jul 5 10:13:17 2022 +0800
Optimize distributed lock context add lock scope (#18831)
* Optimize distributed lock context add lock scope
* fix
---
.../shardingsphere/infra/lock/LockContext.java | 3 +-
.../shardingsphere/infra/lock/LockScope.java | 26 ++++++++++
.../pipeline/core/lock/PipelineSimpleLock.java | 5 +-
.../rulealtered/RuleAlteredJobPreparer.java | 3 +-
.../coordinator/lock/DistributedLockContext.java | 5 +-
...va => ShardingSphereDistributedGlobalLock.java} | 6 +--
.../ShardingSphereDistributedStandardLock.java | 58 ++++++++++++++++++++++
.../ShardingSphereDistributedLockManager.java | 24 ++++++---
.../lock/manager/ShardingSphereLockManager.java | 4 +-
.../lock/DistributedLockContextTest.java | 5 +-
...ingSphereDistributedGlobalLockManagerTest.java} | 11 ++--
.../manager/memory/lock/MemoryLockContext.java | 3 +-
.../standalone/lock/StandaloneLockContext.java | 3 +-
13 files changed, 131 insertions(+), 25 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockContext.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockContext.java
index 3ff0d405d08..5184e7edcd5 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockContext.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockContext.java
@@ -35,9 +35,10 @@ public interface LockContext {
/**
* Get lock.
*
+ * @param lockScope lock scope
* @return lock
*/
- ShardingSphereLock getLock();
+ ShardingSphereLock getLock(LockScope lockScope);
/**
* Try lock.
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockScope.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockScope.java
new file mode 100644
index 00000000000..49e845342f6
--- /dev/null
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockScope.java
@@ -0,0 +1,26 @@
+/*
+ * 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.shardingsphere.infra.lock;
+
+/**
+ * Lock scope.
+ */
+public enum LockScope {
+
+ STANDARD, GLOBAL
+}
diff --git
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/lock/PipelineSimpleLock.java
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/lock/PipelineSimpleLock.java
index d2fc0a51faa..f7cbcb8955e 100644
---
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/lock/PipelineSimpleLock.java
+++
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/lock/PipelineSimpleLock.java
@@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.shardingsphere.data.pipeline.core.constant.DataPipelineConstants;
import org.apache.shardingsphere.data.pipeline.core.context.PipelineContext;
import org.apache.shardingsphere.infra.lock.LockContext;
+import org.apache.shardingsphere.infra.lock.LockScope;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -68,7 +69,7 @@ public final class PipelineSimpleLock {
*/
public boolean tryLock(final String lockName, final long timeoutMills) {
String realLockName = decorateLockName(lockName);
- boolean result = lockContext.getLock().tryLock(realLockName,
timeoutMills);
+ boolean result =
lockContext.getLock(LockScope.GLOBAL).tryLock(realLockName, timeoutMills);
if (result) {
lockNameLockedMap.put(realLockName, true);
}
@@ -86,7 +87,7 @@ public final class PipelineSimpleLock {
log.info("releaseLock, lockName={}", realLockName);
if (lockNameLockedMap.getOrDefault(realLockName, false)) {
lockNameLockedMap.remove(realLockName);
- lockContext.getLock().releaseLock(realLockName);
+ lockContext.getLock(LockScope.GLOBAL).releaseLock(realLockName);
}
}
diff --git
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
index 4408e275d14..5252c9e2469 100644
---
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
+++
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/rulealtered/RuleAlteredJobPreparer.java
@@ -50,6 +50,7 @@ import
org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
import
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator;
import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
+import org.apache.shardingsphere.infra.lock.LockScope;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import
org.apache.shardingsphere.infra.yaml.config.swapper.YamlDataSourceConfigurationSwapper;
import
org.apache.shardingsphere.scaling.core.job.check.EnvironmentCheckerFactory;
@@ -103,7 +104,7 @@ public final class RuleAlteredJobPreparer {
RuleAlteredJobConfiguration jobConfig = jobContext.getJobConfig();
// TODO the lock will be replaced
String lockName = "prepare-" + jobConfig.getJobId();
- ShardingSphereLock lock =
PipelineContext.getContextManager().getInstanceContext().getLockContext().getLock();
+ ShardingSphereLock lock =
PipelineContext.getContextManager().getInstanceContext().getLockContext().getLock(LockScope.GLOBAL);
if (lock.tryLock(lockName, 3000)) {
try {
prepareAndCheckTarget(jobContext);
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContext.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContext.java
index 03f8c8c0f1e..2a575c8110c 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContext.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContext.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.instance.InstanceContext;
+import org.apache.shardingsphere.infra.lock.LockScope;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager.ShardingSphereLockManager;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager.internal.ShardingSphereInternalLockHolder;
@@ -53,8 +54,8 @@ public final class DistributedLockContext extends
AbstractLockContext {
}
@Override
- public ShardingSphereLock getLock() {
- return lockManager.getDistributedLock();
+ public ShardingSphereLock getLock(final LockScope lockScope) {
+ return lockManager.getDistributedLock(lockScope);
}
@Override
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedLock.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedGlobalLock.java
similarity index 95%
rename from
shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedLock.java
rename to
shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedGlobalLock.java
index 30baa863438..ff56b5d8306 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedLock.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedGlobalLock.java
@@ -35,16 +35,16 @@ import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.util.Time
import java.util.Optional;
/**
- * Distribute mutex lock of ShardingSphere.
+ * Distribute global lock of ShardingSphere.
*/
@Slf4j
-public final class ShardingSphereDistributedLock implements ShardingSphereLock
{
+public final class ShardingSphereDistributedGlobalLock implements
ShardingSphereLock {
private final LockNodeService lockNodeService =
LockNodeServiceFactory.getInstance().getLockNodeService(LockNodeType.DISTRIBUTED);
private final ShardingSphereInternalLockHolder lockHolder;
- public ShardingSphereDistributedLock(final
ShardingSphereInternalLockHolder lockHolder) {
+ public ShardingSphereDistributedGlobalLock(final
ShardingSphereInternalLockHolder lockHolder) {
this.lockHolder = lockHolder;
ShardingSphereEventBus.getInstance().register(this);
syncDistributedLockStatus();
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedStandardLock.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedStandardLock.java
new file mode 100644
index 00000000000..0329f08ce57
--- /dev/null
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/distributed/ShardingSphereDistributedStandardLock.java
@@ -0,0 +1,58 @@
+/*
+ * 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.shardingsphere.mode.manager.cluster.coordinator.lock.distributed;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.LockNodeService;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager.internal.ShardingSphereInternalLockHolder;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.service.LockNodeServiceFactory;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.util.LockNodeType;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.util.TimeoutMilliseconds;
+
+/**
+ * Distribute standard lock of ShardingSphere.
+ */
+@RequiredArgsConstructor
+public final class ShardingSphereDistributedStandardLock implements
ShardingSphereLock {
+
+ private final LockNodeService lockNodeService =
LockNodeServiceFactory.getInstance().getLockNodeService(LockNodeType.DISTRIBUTED);
+
+ private final ShardingSphereInternalLockHolder lockHolder;
+
+ @Override
+ public boolean tryLock(final String lockName) {
+ return tryLock(lockName, TimeoutMilliseconds.MAX_TRY_LOCK);
+
+ }
+
+ @Override
+ public boolean tryLock(final String lockName, final long timeoutMillis) {
+ return
lockHolder.getOrCreateInterReentrantMutexLock(lockNodeService.generateLocksName(lockName)).tryLock(timeoutMillis);
+ }
+
+ @Override
+ public void releaseLock(final String lockName) {
+
lockHolder.getOrCreateInterReentrantMutexLock(lockNodeService.generateLocksName(lockName)).unlock();
+ }
+
+ @Override
+ public boolean isLocked(final String lockName) {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedLockManager.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedLockManager.java
index 714214ade6c..5ff25aace81 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedLockManager.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedLockManager.java
@@ -20,33 +20,45 @@ package
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager;
import com.google.common.base.Preconditions;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.lock.LockMode;
+import org.apache.shardingsphere.infra.lock.LockScope;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.database.ShardingSphereDistributedDatabaseLock;
-import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.distributed.ShardingSphereDistributedLock;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.distributed.ShardingSphereDistributedGlobalLock;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.distributed.ShardingSphereDistributedStandardLock;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager.state.LockStateContextFactory;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager.internal.ShardingSphereInternalLockHolder;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.util.TimeoutMilliseconds;
import
org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
/**
- * Distribute lock manager.
+ * Distribute lock manager of ShardingSphere.
*/
@Slf4j
public final class ShardingSphereDistributedLockManager implements
ShardingSphereLockManager {
- private ShardingSphereLock distributedLock;
+ private ShardingSphereLock standardDistributedLock;
+
+ private ShardingSphereLock globalDistributedLock;
private ShardingSphereLock databaseLock;
@Override
public void init(final ShardingSphereInternalLockHolder lockHolder) {
- distributedLock = new ShardingSphereDistributedLock(lockHolder);
+ standardDistributedLock = new
ShardingSphereDistributedStandardLock(lockHolder);
+ globalDistributedLock = new
ShardingSphereDistributedGlobalLock(lockHolder);
databaseLock = new ShardingSphereDistributedDatabaseLock(lockHolder,
LockStateContextFactory.getLockStateContext());
}
@Override
- public ShardingSphereLock getDistributedLock() {
- return distributedLock;
+ public ShardingSphereLock getDistributedLock(final LockScope lockScope) {
+ switch (lockScope) {
+ case STANDARD:
+ return standardDistributedLock;
+ case GLOBAL:
+ return globalDistributedLock;
+ default:
+ throw new UnsupportedOperationException();
+ }
}
@Override
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereLockManager.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereLockManager.java
index 06c835b69cd..20c8c26aa9e 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereLockManager.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereLockManager.java
@@ -17,6 +17,7 @@
package
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager;
+import org.apache.shardingsphere.infra.lock.LockScope;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager.internal.ShardingSphereInternalLockHolder;
import
org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
@@ -39,9 +40,10 @@ public interface ShardingSphereLockManager extends
RequiredSPI {
/**
* Get distributed lock.
*
+ * @param lockScope lock scope
* @return distributed lock
*/
- ShardingSphereLock getDistributedLock();
+ ShardingSphereLock getDistributedLock(LockScope lockScope);
/**
* Try lock for database.
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContextTest.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContextTest.java
index 30b18e12958..9bca6081565 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContextTest.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/DistributedLockContextTest.java
@@ -22,6 +22,7 @@ import
org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator;
+import org.apache.shardingsphere.infra.lock.LockScope;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import
org.apache.shardingsphere.mode.manager.lock.definition.LockNameDefinitionFactory;
import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
@@ -40,7 +41,7 @@ public final class DistributedLockContextTest {
DistributedLockContext distributedLockContext = new
DistributedLockContext(mock(ClusterPersistRepository.class));
ComputeNodeInstance currentInstance = new ComputeNodeInstance(new
ProxyInstanceMetaData("1", 3307));
new InstanceContext(currentInstance, mock(WorkerIdGenerator.class),
mock(ModeConfiguration.class), distributedLockContext);
- assertThat(distributedLockContext.getLock(),
instanceOf(ShardingSphereLock.class));
+ assertThat(distributedLockContext.getLock(LockScope.GLOBAL),
instanceOf(ShardingSphereLock.class));
}
@Test
@@ -48,7 +49,7 @@ public final class DistributedLockContextTest {
ComputeNodeInstance currentInstance = new ComputeNodeInstance(new
ProxyInstanceMetaData("1", 3307));
DistributedLockContext distributedLockContext = new
DistributedLockContext(mock(ClusterPersistRepository.class));
new InstanceContext(currentInstance, mock(WorkerIdGenerator.class),
mock(ModeConfiguration.class), distributedLockContext);
- assertNotNull(distributedLockContext.getLock());
+ assertNotNull(distributedLockContext.getLock(LockScope.GLOBAL));
}
@Test
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedLockManagerTest.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedGlobalLockManagerTest.java
similarity index 90%
rename from
shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedLockManagerTest.java
rename to
shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedGlobalLockManagerTest.java
index 3bd6624b4fc..e8c5da371fe 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedLockManagerTest.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/lock/manager/ShardingSphereDistributedGlobalLockManagerTest.java
@@ -19,8 +19,9 @@ package
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager;
import org.apache.shardingsphere.infra.lock.LockLevel;
import org.apache.shardingsphere.infra.lock.LockMode;
+import org.apache.shardingsphere.infra.lock.LockScope;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.database.ShardingSphereDistributedDatabaseLock;
-import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.distributed.ShardingSphereDistributedLock;
+import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.distributed.ShardingSphereDistributedGlobalLock;
import
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.util.TimeoutMilliseconds;
import
org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
import org.junit.Before;
@@ -34,14 +35,14 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ShardingSphereDistributedLockManagerTest {
+public final class ShardingSphereDistributedGlobalLockManagerTest {
private final ShardingSphereDistributedLockManager
shardingSphereDistributedLockManager = new
ShardingSphereDistributedLockManager();
@Before
public void init() throws ReflectiveOperationException {
- ShardingSphereDistributedLock distributedLock =
mock(ShardingSphereDistributedLock.class);
- Field distributedLockField =
shardingSphereDistributedLockManager.getClass().getDeclaredField("distributedLock");
+ ShardingSphereDistributedGlobalLock distributedLock =
mock(ShardingSphereDistributedGlobalLock.class);
+ Field distributedLockField =
shardingSphereDistributedLockManager.getClass().getDeclaredField("globalDistributedLock");
distributedLockField.setAccessible(true);
distributedLockField.set(shardingSphereDistributedLockManager,
distributedLock);
ShardingSphereDistributedDatabaseLock databaseLock =
mock(ShardingSphereDistributedDatabaseLock.class);
@@ -53,7 +54,7 @@ public final class ShardingSphereDistributedLockManagerTest {
@Test
public void assertGetDistributedLock() {
-
assertNotNull(shardingSphereDistributedLockManager.getDistributedLock());
+
assertNotNull(shardingSphereDistributedLockManager.getDistributedLock(LockScope.GLOBAL));
}
@Test
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/lock/MemoryLockContext.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/lock/MemoryLockContext.java
index 0ac09ff9aea..632d63eea44 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/lock/MemoryLockContext.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/lock/MemoryLockContext.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.mode.manager.memory.lock;
+import org.apache.shardingsphere.infra.lock.LockScope;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import org.apache.shardingsphere.mode.manager.lock.AbstractLockContext;
import
org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
@@ -29,7 +30,7 @@ public final class MemoryLockContext extends
AbstractLockContext {
private final ShardingSphereLock memoryLock = new
ShardingSphereMemoryLock();
@Override
- public ShardingSphereLock getLock() {
+ public ShardingSphereLock getLock(final LockScope lockScope) {
return memoryLock;
}
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/lock/StandaloneLockContext.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/lock/StandaloneLockContext.java
index 0f292fadc9d..a0e0678f82e 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/lock/StandaloneLockContext.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/lock/StandaloneLockContext.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.mode.manager.standalone.lock;
+import org.apache.shardingsphere.infra.lock.LockScope;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import org.apache.shardingsphere.mode.manager.lock.AbstractLockContext;
import
org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
@@ -29,7 +30,7 @@ public final class StandaloneLockContext extends
AbstractLockContext {
private final ShardingSphereLock standaloneLock = new
ShardingSphereStandaloneLock();
@Override
- public ShardingSphereLock getLock() {
+ public ShardingSphereLock getLock(final LockScope lockScope) {
return standaloneLock;
}