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 <jacky7...@163.com>
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;
     }
     

Reply via email to