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; }