You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/04/12 10:09:46 UTC
[shardingsphere] branch master updated: Optimize lock path for zookeeper (#16764)
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 56e8169c352 Optimize lock path for zookeeper (#16764)
56e8169c352 is described below
commit 56e8169c352d964c6e34659acc111ae8e924c2a8
Author: gin <ja...@163.com>
AuthorDate: Tue Apr 12 18:09:29 2022 +0800
Optimize lock path for zookeeper (#16764)
---
.../coordinator/lock/DistributeLockContext.java | 2 +-
.../lock/ShardingSphereDistributeGlobalLock.java | 8 +-
.../cluster/coordinator/lock/service/LockNode.java | 94 +++++++++++-----------
.../lock/service/LockRegistryService.java | 14 ++--
.../lock/watcher/GlobalAckChangedWatcher.java | 5 +-
.../lock/watcher/GlobalLocksChangedWatcher.java | 4 +-
.../coordinator/lock/service/LockNodeTest.java | 47 ++++++-----
.../lock/service/LockRegistryServiceTest.java | 14 ++--
.../lock/watcher/GlobalAckChangedWatcherTest.java | 4 +-
.../watcher/GlobalLocksChangedWatcherTest.java | 4 +-
10 files changed, 103 insertions(+), 93 deletions(-)
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/DistributeLockContext.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/DistributeLockContext.java
index 22f2b9fbbfc..be4e643ecd9 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/DistributeLockContext.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/DistributeLockContext.java
@@ -65,7 +65,7 @@ public final class DistributeLockContext implements LockContext {
}
private void synchronizeGlobalLock() {
- Collection<String> allGlobalLock = lockRegistryService.getAllGlobalLock();
+ Collection<String> allGlobalLock = lockRegistryService.getAllGlobalSchemaLocks();
if (allGlobalLock.isEmpty()) {
lockRegistryService.initGlobalLockRoot();
return;
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/ShardingSphereDistributeGlobalLock.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/ShardingSphereDistributeGlobalLock.java
index a4cc84cfd1d..ef8d4af6ced 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/ShardingSphereDistributeGlobalLock.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/ShardingSphereDistributeGlobalLock.java
@@ -93,7 +93,7 @@ public final class ShardingSphereDistributeGlobalLock implements ShardingSphereG
}
long count = 0;
do {
- if (lockService.tryGlobalLock(LockNode.generateSchemaLockName(lockName, ownerInstanceId))) {
+ if (lockService.tryGlobalLock(LockNode.generateGlobalSchemaLocksName(lockName, ownerInstanceId))) {
if (isAckOK(timeout - count)) {
boolean result = synchronizedLockState.compareAndSet(LockState.UNLOCKED, LockState.LOCKED);
log.info("innerTryLock, result={}, lockName={}, lockState={}, globalLock.hashCode={}", result, lockName, synchronizedLockState.get(), hashCode());
@@ -134,7 +134,7 @@ public final class ShardingSphereDistributeGlobalLock implements ShardingSphereG
log.info("releaseLock, state is not locked, ignore, lockName={}", lockName);
return;
}
- lockService.releaseGlobalLock(LockNode.generateSchemaLockName(lockName, ownerInstanceId));
+ lockService.releaseGlobalLock(LockNode.generateGlobalSchemaLocksName(lockName, ownerInstanceId));
String currentInstanceId = getCurrentInstanceId();
if (isOwnerInstanceId(currentInstanceId)) {
lockedInstances.remove(ownerInstanceId);
@@ -169,13 +169,13 @@ public final class ShardingSphereDistributeGlobalLock implements ShardingSphereG
@Override
public void ackLock(final String lockName, final String lockedInstanceId) {
- lockService.ackLock(LockNode.generateSchemaAckLockName(lockName, lockedInstanceId), lockedInstanceId);
+ lockService.ackLock(LockNode.generateGlobalSchemaAckLockName(lockName, lockedInstanceId), lockedInstanceId);
lockedInstances.add(lockedInstanceId);
}
@Override
public void releaseAckLock(final String lockName, final String lockedInstanceId) {
- lockService.releaseAckLock(LockNode.generateSchemaAckLockName(lockName, lockedInstanceId));
+ lockService.releaseAckLock(LockNode.generateGlobalSchemaAckLockName(lockName, lockedInstanceId));
lockedInstances.remove(lockedInstanceId);
synchronizedLockState.compareAndSet(LockState.LOCKED, LockState.UNLOCKED);
}
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/service/LockNode.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/service/LockNode.java
index b1c50563c28..503bcf64674 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/service/LockNode.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/service/LockNode.java
@@ -34,104 +34,108 @@ public final class LockNode {
private static final String LOCK_ROOT = "lock";
- private static final String LOCK_SCOPE = "global";
+ private static final String LOCK_SCOPE_STANDARD = "standard";
+
+ private static final String LOCK_SCOPE_GLOBAL = "global";
+
+ private static final String LOCK_LEVEL_SCHEMA = "schema";
private static final String LOCKS_NODE = "locks";
private static final String LOCKED_ACK_NODE = "ack";
/**
- * Get lock root node path.
+ * Get standard locks node path.
*
- * @return lock root node path
+ * @return standard locks node path
*/
- public static String getLockRootNodePath() {
- return Joiner.on("/").join("", LOCK_ROOT, LOCKS_NODE);
+ public static String getStandardLocksNodePath() {
+ return Joiner.on("/").join("", LOCK_ROOT, LOCK_SCOPE_STANDARD, LOCKS_NODE);
}
/**
- * Get lock node path.
+ * Get global schema locks node path.
*
- * @param lockName lock name
- * @return lock node path
+ * @return global schema lock node path
*/
- public static String getLockNodePath(final String lockName) {
- return Joiner.on("/").join("", LOCK_ROOT, LOCKS_NODE, lockName);
+ public static String getGlobalSchemaLocksNodePath() {
+ return Joiner.on("/").join("", LOCK_ROOT, LOCK_SCOPE_GLOBAL, LOCK_LEVEL_SCHEMA, LOCKS_NODE);
}
/**
- * Get locks node path.
+ * Get global schema locked ack node path.
*
- * @return locks node path
+ * @return global schema locked ack node path
*/
- public static String getGlobalLocksNodePath() {
- return Joiner.on("/").join("", LOCK_ROOT, LOCK_SCOPE, LOCKS_NODE);
+ public static String getGlobalSchemaLockedAckNodePath() {
+ return Joiner.on("/").join("", LOCK_ROOT, LOCK_SCOPE_GLOBAL, LOCK_LEVEL_SCHEMA, LOCKED_ACK_NODE);
}
/**
- * Get ack node path.
+ * Generate standard lock name.
*
- * @return ack node path
+ * @param lockName lock name
+ * @return standard lock name
*/
- public static String getGlobalAckNodePath() {
- return Joiner.on("/").join("", LOCK_ROOT, LOCK_SCOPE, LOCKED_ACK_NODE);
+ public static String generateStandardLockName(final String lockName) {
+ return getStandardLocksNodePath() + "/" + lockName;
}
/**
- * Generate schema lock name.
+ * Generate global schema locks name.
*
* @param schema schema
* @param instanceId instance id
- * @return schema lock name
+ * @return global schema locks name
*/
- public static String generateSchemaLockName(final String schema, final String instanceId) {
- return getGlobalLocksNodePath() + "/" + LockNodeUtil.generateSchemaLockName(schema, instanceId);
+ public static String generateGlobalSchemaLocksName(final String schema, final String instanceId) {
+ return getGlobalSchemaLocksNodePath() + "/" + LockNodeUtil.generateSchemaLockName(schema, instanceId);
}
/**
- * Generate schema ack lock name.
+ * Generate global schema ack lock name.
*
* @param schema schema
* @param lockedInstanceId locked instance id
- * @return schema ack lock name
+ * @return global schema ack lock name
*/
- public static String generateSchemaAckLockName(final String schema, final String lockedInstanceId) {
- return getGlobalAckNodePath() + "/" + LockNodeUtil.generateSchemaLockName(schema, lockedInstanceId);
+ public static String generateGlobalSchemaAckLockName(final String schema, final String lockedInstanceId) {
+ return getGlobalSchemaLockedAckNodePath() + "/" + LockNodeUtil.generateSchemaLockName(schema, lockedInstanceId);
}
/**
- * Get lock name by lock node path.
+ * Generate global schema Lock released node path.
*
- * @param lockNodePath lock node path
- * @return lock name
+ * @param schema schema
+ * @param instanceId instance id
+ * @return global schema Lock released name
*/
- public static Optional<String> getLockName(final String lockNodePath) {
- Pattern pattern = Pattern.compile(getLockRootNodePath() + "/" + "(.+)/(.+)$", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(lockNodePath);
- return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty();
+ public static String generateGlobalSchemaLockReleasedNodePath(final String schema, final String instanceId) {
+ return getGlobalSchemaLocksNodePath() + "/" + LockNodeUtil.generateSchemaLockName(schema, instanceId) + "/leases";
}
/**
- * Get locked key name by locks node path.
+ * Parse global schema Locks node path.
*
- * @param locksNodePath locks node path
- * @return schema name
+ * @param nodePath locks node path
+ * @return global schema locked node path
*/
- public static Optional<String> getLockedName(final String locksNodePath) {
- Pattern pattern = Pattern.compile(getGlobalLocksNodePath() + "/(.+)$", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(locksNodePath);
+ public static Optional<String> parseGlobalSchemaLocksNodePath(final String nodePath) {
+ // TODO "(.+)/leases/(.+)$"
+ Pattern pattern = Pattern.compile(getGlobalSchemaLocksNodePath() + "/(.+)$", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(nodePath);
return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty();
}
/**
- * Get ack locked key name by ack node path.
+ * Parse global schema locked ack node path.
*
- * @param ackNodePath ack node path
- * @return locked instance id
+ * @param nodePath locked ack node path
+ * @return global schema locked ack node path
*/
- public static Optional<String> getAckLockedName(final String ackNodePath) {
- Pattern pattern = Pattern.compile(getGlobalAckNodePath() + "/(.+)$", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(ackNodePath);
+ public static Optional<String> parseGlobalSchemaLockedAckNodePath(final String nodePath) {
+ Pattern pattern = Pattern.compile(getGlobalSchemaLockedAckNodePath() + "/(.+)$", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(nodePath);
return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty();
}
}
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/service/LockRegistryService.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/service/LockRegistryService.java
index 2b03322d075..f72c9fd101d 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/service/LockRegistryService.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/service/LockRegistryService.java
@@ -38,9 +38,9 @@ public final class LockRegistryService {
* Init global lock root patch.
*/
public void initGlobalLockRoot() {
- repository.persist(LockNode.getLockRootNodePath(), "");
- repository.persist(LockNode.getGlobalLocksNodePath(), "");
- repository.persist(LockNode.getGlobalAckNodePath(), "");
+ repository.persist(LockNode.getStandardLocksNodePath(), "");
+ repository.persist(LockNode.getGlobalSchemaLocksNodePath(), "");
+ repository.persist(LockNode.getGlobalSchemaLockedAckNodePath(), "");
}
/**
@@ -48,8 +48,8 @@ public final class LockRegistryService {
*
* @return all global locks
*/
- public Collection<String> getAllGlobalLock() {
- return repository.getChildrenKeys(LockNode.getGlobalLocksNodePath());
+ public Collection<String> getAllGlobalSchemaLocks() {
+ return repository.getChildrenKeys(LockNode.getGlobalSchemaLocksNodePath());
}
/**
@@ -103,7 +103,7 @@ public final class LockRegistryService {
* @return true if get the lock, false if not
*/
public boolean tryLock(final String lockName, final long timeoutMilliseconds) {
- return repository.tryLock(LockNode.getLockNodePath(lockName), timeoutMilliseconds, TimeUnit.MILLISECONDS);
+ return repository.tryLock(LockNode.generateStandardLockName(lockName), timeoutMilliseconds, TimeUnit.MILLISECONDS);
}
/**
@@ -112,6 +112,6 @@ public final class LockRegistryService {
* @param lockName lock name
*/
public void releaseLock(final String lockName) {
- repository.releaseLock(LockNode.getLockNodePath(lockName));
+ repository.releaseLock(LockNode.generateStandardLockName(lockName));
}
}
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/watcher/GlobalAckChangedWatcher.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/watcher/GlobalAckChangedWatcher.java
index 9b77fb1eaf6..04699cf1470 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/watcher/GlobalAckChangedWatcher.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/watcher/GlobalAckChangedWatcher.java
@@ -37,7 +37,7 @@ public final class GlobalAckChangedWatcher implements GovernanceWatcher<Governan
@Override
public Collection<String> getWatchingKeys() {
- return Collections.singleton(LockNode.getGlobalAckNodePath());
+ return Collections.singleton(LockNode.getGlobalSchemaLockedAckNodePath());
}
@Override
@@ -47,8 +47,7 @@ public final class GlobalAckChangedWatcher implements GovernanceWatcher<Governan
@Override
public Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
- String key = event.getKey();
- Optional<String> ackLockedName = LockNode.getAckLockedName(key);
+ Optional<String> ackLockedName = LockNode.parseGlobalSchemaLockedAckNodePath(event.getKey());
if (ackLockedName.isPresent()) {
return handleGlobalAckEvent(event.getType(), ackLockedName.get());
}
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/watcher/GlobalLocksChangedWatcher.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/watcher/GlobalLocksChangedWatcher.java
index 33b9791704b..7641ed26c53 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/watcher/GlobalLocksChangedWatcher.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/watcher/GlobalLocksChangedWatcher.java
@@ -37,7 +37,7 @@ public final class GlobalLocksChangedWatcher implements GovernanceWatcher<Govern
@Override
public Collection<String> getWatchingKeys() {
- return Collections.singleton(LockNode.getGlobalLocksNodePath());
+ return Collections.singleton(LockNode.getGlobalSchemaLocksNodePath());
}
@Override
@@ -47,7 +47,7 @@ public final class GlobalLocksChangedWatcher implements GovernanceWatcher<Govern
@Override
public Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
- Optional<String> lockedName = LockNode.getLockedName(event.getKey());
+ Optional<String> lockedName = LockNode.parseGlobalSchemaLocksNodePath(event.getKey());
if (lockedName.isPresent()) {
return handleGlobalLocksEvent(event.getType(), lockedName.get());
}
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/service/LockNodeTest.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/service/LockNodeTest.java
index be8fa720bed..9670e236e59 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/service/LockNodeTest.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/service/LockNodeTest.java
@@ -28,46 +28,53 @@ import static org.junit.Assert.assertTrue;
public final class LockNodeTest {
@Test
- public void assertGetLockNodePath() {
- assertThat(LockNode.getLockNodePath("test"), is("/lock/locks/test"));
+ public void assertGetStandardLockedNodePath() {
+ assertThat(LockNode.getStandardLocksNodePath(), is("/lock/standard/locks"));
}
@Test
- public void assertGetLockName() {
- assertThat(LockNode.getLockName("/lock/locks/sharding_db.test/_c_c2d-lock-00000").orElse(null), is("sharding_db.test"));
+ public void assertGetGlobalSchemaLocksNodePath() {
+ assertThat(LockNode.getGlobalSchemaLocksNodePath(), is("/lock/global/schema/locks"));
}
@Test
- public void assertGetLockedKey() {
- Optional<String> lockName = LockNode.getLockedName("key/lock/global/locks/schema-127.0.0.1@3307");
- assertTrue(lockName.isPresent());
- assertThat(lockName.get(), is("schema-127.0.0.1@3307"));
+ public void assertGetGlobalSchemaLockedAckNodePath() {
+ assertThat(LockNode.getGlobalSchemaLockedAckNodePath(), is("/lock/global/schema/ack"));
}
@Test
- public void assertGetAckLockedKey() {
- Optional<String> lockName = LockNode.getAckLockedName("/lock/global/ack/schema-127.0.0.1@3308");
- assertTrue(lockName.isPresent());
- assertThat(lockName.get(), is("schema-127.0.0.1@3308"));
+ public void assertGenerateStandardLockName() {
+ assertThat(LockNode.generateStandardLockName("lockName"), is("/lock/standard/locks/lockName"));
}
@Test
- public void assertGetGlobalLocksNodePath() {
- assertThat(LockNode.getGlobalLocksNodePath(), is("/lock/global/locks"));
+ public void assertGenerateGlobalSchemaLocksName() {
+ assertThat(LockNode.generateGlobalSchemaLocksName("schema", "127.0.0.1@3307"), is("/lock/global/schema/locks/schema-127.0.0.1@3307"));
}
@Test
- public void assertGenerateSchemaAckLockName() {
- assertThat(LockNode.generateSchemaAckLockName("schema", "lockedInstanceId"), is("/lock/global/ack/schema-lockedInstanceId"));
+ public void assertGenerateGlobalSchemaAckLockName() {
+ assertThat(LockNode.generateGlobalSchemaAckLockName("schema", "127.0.0.1@3307"), is("/lock/global/schema/ack/schema-127.0.0.1@3307"));
}
@Test
- public void assertGetGlobalAckNodePath() {
- assertThat(LockNode.getGlobalAckNodePath(), is("/lock/global/ack"));
+ public void assertGenerateGlobalSchemaLockReleasedNodePath() {
+ assertThat(LockNode.generateGlobalSchemaLockReleasedNodePath("schema", "127.0.0.1@3307"), is("/lock/global/schema/locks/schema-127.0.0.1@3307/leases"));
}
@Test
- public void assertGenerateSchemaLockName() {
- assertThat(LockNode.generateSchemaLockName("schema", "instanceId"), is("/lock/global/locks/schema-instanceId"));
+ public void assertParseGlobalSchemaLocksNodePath() {
+ String nodePath = "/lock/global/schema/locks/schema-127.0.0.1@3307";
+ Optional<String> globalSchemaLocksNodePath = LockNode.parseGlobalSchemaLocksNodePath(nodePath);
+ assertTrue(globalSchemaLocksNodePath.isPresent());
+ assertThat(globalSchemaLocksNodePath.get(), is("schema-127.0.0.1@3307"));
+ }
+
+ @Test
+ public void assertParseGlobalSchemaLockedAckNodePath() {
+ String nodePath = "/lock/global/schema/ack/schema-127.0.0.1@3307";
+ Optional<String> globalSchemaLockedAckNodePath = LockNode.parseGlobalSchemaLockedAckNodePath(nodePath);
+ assertTrue(globalSchemaLockedAckNodePath.isPresent());
+ assertThat(globalSchemaLockedAckNodePath.get(), is("schema-127.0.0.1@3307"));
}
}
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/service/LockRegistryServiceTest.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/service/LockRegistryServiceTest.java
index aa70715106c..3c182fef594 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/service/LockRegistryServiceTest.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/service/LockRegistryServiceTest.java
@@ -48,38 +48,38 @@ public final class LockRegistryServiceTest {
@Test
public void assertTryLock() {
lockRegistryService.tryLock("test", 50L);
- verify(clusterPersistRepository).tryLock(LockNode.getLockNodePath("test"), 50L, TimeUnit.MILLISECONDS);
+ verify(clusterPersistRepository).tryLock(LockNode.generateStandardLockName("test"), 50L, TimeUnit.MILLISECONDS);
}
@Test
public void assertReleaseLock() {
lockRegistryService.releaseLock("test");
- verify(clusterPersistRepository).releaseLock(LockNode.getLockNodePath("test"));
+ verify(clusterPersistRepository).releaseLock(LockNode.generateStandardLockName("test"));
}
@Test
public void assertGetAllGlobalLock() {
- lockRegistryService.getAllGlobalLock();
- verify(clusterPersistRepository).getChildrenKeys(LockNode.getGlobalLocksNodePath());
+ lockRegistryService.getAllGlobalSchemaLocks();
+ verify(clusterPersistRepository).getChildrenKeys(LockNode.getGlobalSchemaLocksNodePath());
}
@Test
public void assertReleaseGlobalLock() {
- String schemaLockName = LockNode.generateSchemaLockName("schema", "127.0.0.1@3307");
+ String schemaLockName = LockNode.generateGlobalSchemaLocksName("schema", "127.0.0.1@3307");
lockRegistryService.releaseGlobalLock(schemaLockName);
verify(clusterPersistRepository).delete(schemaLockName);
}
@Test
public void assertAckLock() {
- String schemaAckLock = LockNode.generateSchemaAckLockName("schema", "127.0.0.1@3307");
+ String schemaAckLock = LockNode.generateGlobalSchemaAckLockName("schema", "127.0.0.1@3307");
lockRegistryService.ackLock(schemaAckLock, "127.0.0.1@3307");
verify(clusterPersistRepository).persistEphemeral(schemaAckLock, "127.0.0.1@3307");
}
@Test
public void assertReleaseAckLock() {
- String schemaAckLock = LockNode.generateSchemaAckLockName("schema", "127.0.0.1@3307");
+ String schemaAckLock = LockNode.generateGlobalSchemaAckLockName("schema", "127.0.0.1@3307");
lockRegistryService.releaseAckLock(schemaAckLock);
verify(clusterPersistRepository).delete(schemaAckLock);
}
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/watcher/GlobalAckChangedWatcherTest.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/watcher/GlobalAckChangedWatcherTest.java
index d1b3d6ea80a..f3388594086 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/watcher/GlobalAckChangedWatcherTest.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/watcher/GlobalAckChangedWatcherTest.java
@@ -33,13 +33,13 @@ public final class GlobalAckChangedWatcherTest {
@Test
public void assertCreateGovernanceEvent() {
- DataChangedEvent addDataChangedEvent = new DataChangedEvent("/lock/global/ack/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.ADDED);
+ DataChangedEvent addDataChangedEvent = new DataChangedEvent("/lock/global/schema/ack/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.ADDED);
Optional<GovernanceEvent> add = new GlobalAckChangedWatcher().createGovernanceEvent(addDataChangedEvent);
assertTrue(add.isPresent());
GovernanceEvent addEvent = add.get();
assertTrue(addEvent instanceof AckLockedEvent);
assertThat(((AckLockedEvent) addEvent).getLockName(), is("schema-127.0.0.1@3307"));
- DataChangedEvent deleteDataChangedEvent = new DataChangedEvent("/lock/global/ack/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.DELETED);
+ DataChangedEvent deleteDataChangedEvent = new DataChangedEvent("/lock/global/schema/ack/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.DELETED);
Optional<GovernanceEvent> delete = new GlobalAckChangedWatcher().createGovernanceEvent(deleteDataChangedEvent);
assertTrue(delete.isPresent());
GovernanceEvent deleteEvent = delete.get();
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/watcher/GlobalLocksChangedWatcherTest.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/watcher/GlobalLocksChangedWatcherTest.java
index 298cc4a93dd..bff355232ff 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/watcher/GlobalLocksChangedWatcherTest.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/watcher/GlobalLocksChangedWatcherTest.java
@@ -33,13 +33,13 @@ public final class GlobalLocksChangedWatcherTest {
@Test
public void assertCreateGovernanceEvent() {
- DataChangedEvent addDataChangedEvent = new DataChangedEvent("/lock/global/locks/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.ADDED);
+ DataChangedEvent addDataChangedEvent = new DataChangedEvent("/lock/global/schema/locks/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.ADDED);
Optional<GovernanceEvent> add = new GlobalLocksChangedWatcher().createGovernanceEvent(addDataChangedEvent);
assertTrue(add.isPresent());
GovernanceEvent addEvent = add.get();
assertTrue(addEvent instanceof LockedEvent);
assertThat(((LockedEvent) addEvent).getLockName(), is("schema-127.0.0.1@3307"));
- DataChangedEvent deleteDataChangedEvent = new DataChangedEvent("/lock/global/locks/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.DELETED);
+ DataChangedEvent deleteDataChangedEvent = new DataChangedEvent("/lock/global/schema/locks/schema-127.0.0.1@3307", "127.0.0.1@3307", DataChangedEvent.Type.DELETED);
Optional<GovernanceEvent> delete = new GlobalLocksChangedWatcher().createGovernanceEvent(deleteDataChangedEvent);
assertTrue(delete.isPresent());
GovernanceEvent deleteEvent = delete.get();