This is an automated email from the ASF dual-hosted git repository. zhangliang 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 a01e7ef37bf Add GlobalLock (#34131) a01e7ef37bf is described below commit a01e7ef37bf991870ac54ca159fd77a3d3b7b10c Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Tue Dec 24 07:44:02 2024 +0800 Add GlobalLock (#34131) * Add GlobalLock * Add GlobalLock --- .../migration/preparer/MigrationJobPreparer.java | 3 +-- .../migration/preparer/MigrationPrepareLock.java | 22 ++++++++------------ .../globalclock/executor/GlobalClockLock.java | 24 ++++++++-------------- .../executor/GlobalClockTransactionHook.java | 3 +-- .../{GlobalLockName.java => GlobalLock.java} | 24 ++++++++-------------- .../mode/lock/global/GlobalLockDefinition.java | 4 ++++ .../mode/lock/global/GlobalLockName.java | 6 ------ .../ShardingSphereStatisticsRefreshEngine.java | 4 ++-- .../refresher/lock/StatisticsLock.java} | 24 ++++++++-------------- .../mode/lock/global/GlobalLockDefinitionTest.java | 6 +++++- .../cluster/lock/ClusterLockContextTest.java | 9 ++++++-- .../service/GlobalLockPersistServiceTest.java | 19 ++++++++++++----- .../distsql/ral/updatable/LockClusterExecutor.java | 4 ++-- .../ral/updatable/UnlockClusterExecutor.java | 4 ++-- .../distsql/ral/updatable/lock/ClusterLock.java | 24 ++++++++-------------- 15 files changed, 79 insertions(+), 101 deletions(-) diff --git a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationJobPreparer.java b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationJobPreparer.java index 0bed58cbd4c..1d2314aa29e 100644 --- a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationJobPreparer.java +++ b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationJobPreparer.java @@ -70,7 +70,6 @@ import org.apache.shardingsphere.infra.lock.LockDefinition; import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.parser.SQLParserEngine; import org.apache.shardingsphere.mode.lock.global.GlobalLockDefinition; -import org.apache.shardingsphere.mode.lock.global.GlobalLockName; import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.parser.rule.SQLParserRule; @@ -118,7 +117,7 @@ public final class MigrationJobPreparer implements PipelineJobPreparer<Migration if (!jobItemManager.getProgress(jobId, jobItemContext.getShardingItem()).isPresent()) { jobItemManager.persistProgress(jobItemContext); } - LockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.PREPARE, jobConfig.getJobId()); + LockDefinition lockDefinition = new GlobalLockDefinition(new MigrationPrepareLock(jobConfig.getJobId())); long startTimeMillis = System.currentTimeMillis(); if (lockContext.tryLock(lockDefinition, 600 * 1000L)) { log.info("Lock success, jobId={}, shardingItem={}, cost {} ms.", jobId, jobItemContext.getShardingItem(), System.currentTimeMillis() - startTimeMillis); diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationPrepareLock.java similarity index 70% copy from mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java copy to kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationPrepareLock.java index 782c0818ce0..958045d301f 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java +++ b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationPrepareLock.java @@ -15,25 +15,21 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.lock.global; +package org.apache.shardingsphere.data.pipeline.scenario.migration.preparer; -import lombok.Getter; import lombok.RequiredArgsConstructor; +import org.apache.shardingsphere.mode.lock.global.GlobalLock; /** - * Global lock name. + * Migration prepare lock. */ @RequiredArgsConstructor -@Getter -public enum GlobalLockName { +public final class MigrationPrepareLock implements GlobalLock { - CLUSTER_LOCK("cluster_lock"), + private final String jobId; - PREPARE("prepare_%s"), - - GLOBAL_CLOCK("global_clock"), - - STATISTICS("statistics"); - - private final String lockName; + @Override + public String getName() { + return String.format("migration_prepare_%s", jobId); + } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockLock.java similarity index 68% copy from mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java copy to kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockLock.java index 782c0818ce0..589b13b4e81 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java +++ b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockLock.java @@ -15,25 +15,17 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.lock.global; +package org.apache.shardingsphere.globalclock.executor; -import lombok.Getter; -import lombok.RequiredArgsConstructor; +import org.apache.shardingsphere.mode.lock.global.GlobalLock; /** - * Global lock name. + * Global clock lock. */ -@RequiredArgsConstructor -@Getter -public enum GlobalLockName { +public final class GlobalClockLock implements GlobalLock { - CLUSTER_LOCK("cluster_lock"), - - PREPARE("prepare_%s"), - - GLOBAL_CLOCK("global_clock"), - - STATISTICS("statistics"); - - private final String lockName; + @Override + public String getName() { + return "global_clock"; + } } diff --git a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java index 3a36bf69dca..c6093c1d03e 100644 --- a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java +++ b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/executor/GlobalClockTransactionHook.java @@ -23,7 +23,6 @@ import org.apache.shardingsphere.globalclock.rule.GlobalClockRule; import org.apache.shardingsphere.globalclock.rule.constant.GlobalClockOrder; import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; -import org.apache.shardingsphere.mode.lock.global.GlobalLockName; import org.apache.shardingsphere.infra.lock.LockContext; import org.apache.shardingsphere.infra.lock.LockDefinition; import org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext; @@ -41,7 +40,7 @@ import java.util.Optional; */ public final class GlobalClockTransactionHook implements TransactionHook<GlobalClockRule> { - private final LockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.GLOBAL_CLOCK); + private final LockDefinition lockDefinition = new GlobalLockDefinition(new GlobalClockLock()); @Override public void beforeBegin(final GlobalClockRule rule, final DatabaseType databaseType, final TransactionConnectionContext transactionContext) { diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLock.java similarity index 72% copy from mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java copy to mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLock.java index 782c0818ce0..c4c54b55c36 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLock.java @@ -17,23 +17,15 @@ package org.apache.shardingsphere.mode.lock.global; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - /** - * Global lock name. + * Global lock. */ -@RequiredArgsConstructor -@Getter -public enum GlobalLockName { - - CLUSTER_LOCK("cluster_lock"), - - PREPARE("prepare_%s"), - - GLOBAL_CLOCK("global_clock"), - - STATISTICS("statistics"); +public interface GlobalLock { - private final String lockName; + /** + * Get lock name. + * + * @return lock name + */ + String getName(); } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java index bee425df49d..a886d715dc8 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinition.java @@ -33,4 +33,8 @@ public final class GlobalLockDefinition implements LockDefinition { public GlobalLockDefinition(final GlobalLockName lockName, final Object... lockParams) { lockKey = String.format(KEY_PATTERN, String.format(lockName.getLockName(), lockParams)); } + + public GlobalLockDefinition(final GlobalLock globalLock) { + lockKey = String.format(KEY_PATTERN, globalLock.getName()); + } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java index 782c0818ce0..b05d10e0d76 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java @@ -27,12 +27,6 @@ import lombok.RequiredArgsConstructor; @Getter public enum GlobalLockName { - CLUSTER_LOCK("cluster_lock"), - - PREPARE("prepare_%s"), - - GLOBAL_CLOCK("global_clock"), - STATISTICS("statistics"); private final String lockName; diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java index d3add96827b..61fe8413cb7 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java @@ -36,8 +36,8 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowDataSwapper; import org.apache.shardingsphere.metadata.persist.data.AlteredShardingSphereDatabaseData; import org.apache.shardingsphere.mode.lock.global.GlobalLockDefinition; -import org.apache.shardingsphere.mode.lock.global.GlobalLockName; import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.mode.metadata.refresher.lock.StatisticsLock; import java.util.ArrayList; import java.util.Map; @@ -84,7 +84,7 @@ public final class ShardingSphereStatisticsRefreshEngine { } private void collectAndRefresh() { - GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.STATISTICS); + GlobalLockDefinition lockDefinition = new GlobalLockDefinition(new StatisticsLock()); if (lockContext.tryLock(lockDefinition, 5000L)) { try { ShardingSphereStatistics statistics = contextManager.getMetaDataContexts().getStatistics(); diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/lock/StatisticsLock.java similarity index 68% copy from mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java copy to mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/lock/StatisticsLock.java index 782c0818ce0..db5d4951027 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/lock/StatisticsLock.java @@ -15,25 +15,17 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.lock.global; +package org.apache.shardingsphere.mode.metadata.refresher.lock; -import lombok.Getter; -import lombok.RequiredArgsConstructor; +import org.apache.shardingsphere.mode.lock.global.GlobalLock; /** - * Global lock name. + * Statistics lock. */ -@RequiredArgsConstructor -@Getter -public enum GlobalLockName { +public final class StatisticsLock implements GlobalLock { - CLUSTER_LOCK("cluster_lock"), - - PREPARE("prepare_%s"), - - GLOBAL_CLOCK("global_clock"), - - STATISTICS("statistics"); - - private final String lockName; + @Override + public String getName() { + return "statistics"; + } } diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinitionTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinitionTest.java index 19732c7a989..82ee55f24a6 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinitionTest.java +++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/lock/global/GlobalLockDefinitionTest.java @@ -21,11 +21,15 @@ import org.junit.jupiter.api.Test; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; class GlobalLockDefinitionTest { @Test void assertGetLockKey() { - assertThat(new GlobalLockDefinition(GlobalLockName.CLUSTER_LOCK).getLockKey(), is("/lock/exclusive/locks/cluster_lock")); + GlobalLock globalLock = mock(GlobalLock.class); + when(globalLock.getName()).thenReturn("foo_lock"); + assertThat(new GlobalLockDefinition(globalLock).getLockKey(), is("/lock/exclusive/locks/foo_lock")); } } diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/lock/ClusterLockContextTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/lock/ClusterLockContextTest.java index 08d857be142..8b168bad457 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/lock/ClusterLockContextTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/lock/ClusterLockContextTest.java @@ -18,8 +18,8 @@ package org.apache.shardingsphere.mode.manager.cluster.lock; import org.apache.shardingsphere.mode.lock.LockPersistService; +import org.apache.shardingsphere.mode.lock.global.GlobalLock; import org.apache.shardingsphere.mode.lock.global.GlobalLockDefinition; -import org.apache.shardingsphere.mode.lock.global.GlobalLockName; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -33,15 +33,20 @@ import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class ClusterLockContextTest { - private final GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.CLUSTER_LOCK); + @Mock + private GlobalLock globalLock; @Mock private LockPersistService<GlobalLockDefinition> lockPersistService; + private GlobalLockDefinition lockDefinition; + private ClusterLockContext lockContext; @BeforeEach void init() { + when(globalLock.getName()).thenReturn("foo_lock"); + lockDefinition = new GlobalLockDefinition(globalLock); lockContext = new ClusterLockContext(lockPersistService); } diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/GlobalLockPersistServiceTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/GlobalLockPersistServiceTest.java index 77ea847d5e0..6a34617d5b2 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/GlobalLockPersistServiceTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/GlobalLockPersistServiceTest.java @@ -17,9 +17,10 @@ package org.apache.shardingsphere.mode.manager.cluster.persist.service; +import org.apache.shardingsphere.mode.lock.global.GlobalLock; import org.apache.shardingsphere.mode.lock.global.GlobalLockDefinition; -import org.apache.shardingsphere.mode.lock.global.GlobalLockName; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Answers; @@ -33,20 +34,28 @@ import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class GlobalLockPersistServiceTest { + @Mock + private GlobalLock globalLock; + @Mock(answer = Answers.RETURNS_DEEP_STUBS) private ClusterPersistRepository repository; + @BeforeEach + void setUp() { + when(globalLock.getName()).thenReturn("foo_lock"); + } + @Test void assertTryLock() { - when(repository.getDistributedLockHolder().getDistributedLock("/lock/exclusive/locks/cluster_lock").tryLock(1000L)).thenReturn(true); - GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.CLUSTER_LOCK); + when(repository.getDistributedLockHolder().getDistributedLock("/lock/exclusive/locks/foo_lock").tryLock(1000L)).thenReturn(true); + GlobalLockDefinition lockDefinition = new GlobalLockDefinition(globalLock); assertTrue(new GlobalLockPersistService(repository).tryLock(lockDefinition, 1000L)); } @Test void assertUnlock() { - GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.CLUSTER_LOCK); + GlobalLockDefinition lockDefinition = new GlobalLockDefinition(globalLock); new GlobalLockPersistService(repository).unlock(lockDefinition); - verify(repository.getDistributedLockHolder().getDistributedLock("/lock/exclusive/locks/cluster_lock")).unlock(); + verify(repository.getDistributedLockHolder().getDistributedLock("/lock/exclusive/locks/foo_lock")).unlock(); } } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java index ebaf98e816d..73d2bb59f26 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterExecutor.java @@ -23,13 +23,13 @@ import org.apache.shardingsphere.distsql.statement.ral.updatable.LockClusterStat import org.apache.shardingsphere.infra.algorithm.core.exception.MissingRequiredAlgorithmException; import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; import org.apache.shardingsphere.infra.exception.core.external.sql.identifier.SQLExceptionIdentifier; -import org.apache.shardingsphere.mode.lock.global.GlobalLockName; import org.apache.shardingsphere.infra.lock.LockContext; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.infra.state.cluster.ClusterState; import org.apache.shardingsphere.mode.exception.LockedClusterException; import org.apache.shardingsphere.mode.lock.global.GlobalLockDefinition; import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.lock.ClusterLock; import org.apache.shardingsphere.proxy.backend.lock.spi.ClusterLockStrategy; /** @@ -43,7 +43,7 @@ public final class LockClusterExecutor implements DistSQLUpdateExecutor<LockClus checkState(contextManager); checkAlgorithm(sqlStatement); LockContext lockContext = contextManager.getComputeNodeInstanceContext().getLockContext(); - GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.CLUSTER_LOCK); + GlobalLockDefinition lockDefinition = new GlobalLockDefinition(new ClusterLock()); if (lockContext.tryLock(lockDefinition, 3000L)) { try { checkState(contextManager); diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java index 701e1c0eee3..d9d28b883f8 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterExecutor.java @@ -21,12 +21,12 @@ import org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExec import org.apache.shardingsphere.distsql.handler.required.DistSQLExecutorClusterModeRequired; import org.apache.shardingsphere.distsql.statement.ral.updatable.UnlockClusterStatement; import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; -import org.apache.shardingsphere.mode.lock.global.GlobalLockName; import org.apache.shardingsphere.infra.lock.LockContext; import org.apache.shardingsphere.infra.state.cluster.ClusterState; import org.apache.shardingsphere.mode.exception.NotLockedClusterException; import org.apache.shardingsphere.mode.lock.global.GlobalLockDefinition; import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.lock.ClusterLock; /** * Unlock cluster executor. @@ -38,7 +38,7 @@ public final class UnlockClusterExecutor implements DistSQLUpdateExecutor<Unlock public void executeUpdate(final UnlockClusterStatement sqlStatement, final ContextManager contextManager) { checkState(contextManager); LockContext lockContext = contextManager.getComputeNodeInstanceContext().getLockContext(); - GlobalLockDefinition lockDefinition = new GlobalLockDefinition(GlobalLockName.CLUSTER_LOCK); + GlobalLockDefinition lockDefinition = new GlobalLockDefinition(new ClusterLock()); if (lockContext.tryLock(lockDefinition, 3000L)) { try { checkState(contextManager); diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/lock/ClusterLock.java similarity index 68% copy from mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java copy to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/lock/ClusterLock.java index 782c0818ce0..a75d35773e1 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/lock/global/GlobalLockName.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/lock/ClusterLock.java @@ -15,25 +15,17 @@ * limitations under the License. */ -package org.apache.shardingsphere.mode.lock.global; +package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.lock; -import lombok.Getter; -import lombok.RequiredArgsConstructor; +import org.apache.shardingsphere.mode.lock.global.GlobalLock; /** - * Global lock name. + * Cluster lock. */ -@RequiredArgsConstructor -@Getter -public enum GlobalLockName { +public final class ClusterLock implements GlobalLock { - CLUSTER_LOCK("cluster_lock"), - - PREPARE("prepare_%s"), - - GLOBAL_CLOCK("global_clock"), - - STATISTICS("statistics"); - - private final String lockName; + @Override + public String getName() { + return "cluster_lock"; + } }