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/06/28 05:12:53 UTC
[shardingsphere] branch master updated: Simplify args of lock manager (#18650)
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 38c8934abfa Simplify args of lock manager (#18650)
38c8934abfa is described below
commit 38c8934abfab641dd49d367c2343f2a95ac5a7fb
Author: gin <ja...@163.com>
AuthorDate: Tue Jun 28 13:12:47 2022 +0800
Simplify args of lock manager (#18650)
---
.../coordinator/lock/DistributedLockContext.java | 8 ++++----
.../ShardingSphereDistributedLockManager.java | 22 +++++++++++++++-------
.../lock/manager/ShardingSphereLockManager.java | 20 +++++++++-----------
.../ShardingSphereDistributedLockManagerTest.java | 10 ++++++----
4 files changed, 34 insertions(+), 26 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/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 44345bd127c..4ba58e75e05 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
@@ -59,21 +59,21 @@ public final class DistributedLockContext extends AbstractLockContext {
@Override
protected boolean tryLock(final DatabaseLockNameDefinition lockNameDefinition) {
- return lockManager.tryLock(lockNameDefinition.getDatabaseName(), lockNameDefinition.getLockMode());
+ return lockManager.tryLock(lockNameDefinition);
}
@Override
protected boolean tryLock(final DatabaseLockNameDefinition lockNameDefinition, final long timeoutMilliseconds) {
- return lockManager.tryLock(lockNameDefinition.getDatabaseName(), lockNameDefinition.getLockMode(), timeoutMilliseconds);
+ return lockManager.tryLock(lockNameDefinition, timeoutMilliseconds);
}
@Override
protected void releaseLock(final DatabaseLockNameDefinition lockNameDefinition) {
- lockManager.releaseLock(lockNameDefinition.getDatabaseName());
+ lockManager.releaseLock(lockNameDefinition);
}
@Override
protected boolean isLocked(final DatabaseLockNameDefinition lockNameDefinition) {
- return lockManager.isLocked(lockNameDefinition.getDatabaseName());
+ return lockManager.isLocked(lockNameDefinition);
}
}
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 012dc6ece1f..541ca5054ee 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
@@ -26,6 +26,7 @@ import org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.distribut
import org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager.state.LockStateContextFactory;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.mutex.ShardingSphereInterMutexLockHolder;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.util.TimeoutMilliseconds;
+import org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
/**
* Distribute lock manager.
@@ -49,17 +50,20 @@ public final class ShardingSphereDistributedLockManager implements ShardingSpher
}
@Override
- public boolean tryLock(final String databaseName, final LockMode lockMode) {
- return innerTryLock(databaseName, lockMode, TimeoutMilliseconds.MAX_TRY_LOCK);
+ public boolean tryLock(final DatabaseLockNameDefinition lockNameDefinition) {
+ Preconditions.checkNotNull(lockNameDefinition, "Try Lock for database arg lock name definition can not be null.");
+ return tryLock(lockNameDefinition, TimeoutMilliseconds.MAX_TRY_LOCK);
}
@Override
- public boolean tryLock(final String databaseName, final LockMode lockMode, final long timeoutMilliseconds) {
- return innerTryLock(databaseName, lockMode, timeoutMilliseconds);
+ public boolean tryLock(final DatabaseLockNameDefinition lockNameDefinition, final long timeoutMilliseconds) {
+ Preconditions.checkNotNull(lockNameDefinition, "Try Lock for database arg lock name definition can not be null.");
+ return innerTryLock(lockNameDefinition.getDatabaseName(), lockNameDefinition.getLockMode(), timeoutMilliseconds);
}
private synchronized boolean innerTryLock(final String databaseName, final LockMode lockMode, final long timeoutMilliseconds) {
- Preconditions.checkNotNull(databaseName, "Try Lock write for database args database name can not be null.");
+ Preconditions.checkNotNull(databaseName, "Try Lock for database arg database name can not be null.");
+ Preconditions.checkNotNull(lockMode, "Try Lock for database args lock mode can not be null.");
switch (lockMode) {
case READ:
return innerDatabaseTryLock(databaseName, timeoutMilliseconds);
@@ -79,13 +83,17 @@ public final class ShardingSphereDistributedLockManager implements ShardingSpher
}
@Override
- public void releaseLock(final String databaseName) {
+ public void releaseLock(final DatabaseLockNameDefinition lockNameDefinition) {
+ Preconditions.checkNotNull(lockNameDefinition, "Try Lock for database arg lock name definition can not be null.");
+ String databaseName = lockNameDefinition.getDatabaseName();
Preconditions.checkNotNull(databaseName, "Release lock write args database name can not be null.");
databaseLock.releaseLock(databaseName);
}
@Override
- public boolean isLocked(final String databaseName) {
+ public boolean isLocked(final DatabaseLockNameDefinition lockNameDefinition) {
+ Preconditions.checkNotNull(lockNameDefinition, "Try Lock for database arg lock name definition can not be null.");
+ String databaseName = lockNameDefinition.getDatabaseName();
Preconditions.checkNotNull(databaseName, "Is locked database args database name can not be null.");
return databaseLock.isLocked(databaseName);
}
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 f7a11c46717..6c6fcf6140e 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,9 +17,9 @@
package org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.manager;
-import org.apache.shardingsphere.infra.lock.LockMode;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.mutex.ShardingSphereInterMutexLockHolder;
+import org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
import org.apache.shardingsphere.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.spi.type.required.RequiredSPI;
@@ -46,34 +46,32 @@ public interface ShardingSphereLockManager extends RequiredSPI {
/**
* Try lock for database.
*
- * @param databaseName database name
- * @param lockMode lock mode
+ * @param lockNameDefinition lock name definition
* @return is locked or not
*/
- boolean tryLock(String databaseName, LockMode lockMode);
+ boolean tryLock(DatabaseLockNameDefinition lockNameDefinition);
/**
* Try lock write for database.
*
- * @param databaseName database name
- * @param lockMode lock mode
+ * @param lockNameDefinition lock name definition
* @param timeoutMilliseconds timeout milliseconds
* @return is locked or not
*/
- boolean tryLock(String databaseName, LockMode lockMode, long timeoutMilliseconds);
+ boolean tryLock(DatabaseLockNameDefinition lockNameDefinition, long timeoutMilliseconds);
/**
* Release lock for database.
*
- * @param databaseName database name
+ * @param lockNameDefinition lock name definition
*/
- void releaseLock(String databaseName);
+ void releaseLock(DatabaseLockNameDefinition lockNameDefinition);
/**
* Is locked database.
*
- * @param databaseName database name
+ * @param lockNameDefinition lock name definition
* @return is locked or not
*/
- boolean isLocked(String databaseName);
+ boolean isLocked(DatabaseLockNameDefinition lockNameDefinition);
}
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/ShardingSphereDistributedLockManagerTest.java
index ad934f2f891..3bd6624b4fc 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/ShardingSphereDistributedLockManagerTest.java
@@ -17,10 +17,12 @@
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.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.util.TimeoutMilliseconds;
+import org.apache.shardingsphere.mode.manager.lock.definition.DatabaseLockNameDefinition;
import org.junit.Before;
import org.junit.Test;
@@ -56,21 +58,21 @@ public final class ShardingSphereDistributedLockManagerTest {
@Test
public void assertTryReadLock() {
- assertTrue(shardingSphereDistributedLockManager.tryLock("databaseName", LockMode.READ, 3000L));
+ assertTrue(shardingSphereDistributedLockManager.tryLock(new DatabaseLockNameDefinition("databaseName", LockMode.READ, LockLevel.DATABASE), 3000L));
}
@Test(expected = UnsupportedOperationException.class)
public void assertTryWriteLock() {
- shardingSphereDistributedLockManager.tryLock("databaseName", LockMode.WRITE, 3000L);
+ shardingSphereDistributedLockManager.tryLock(new DatabaseLockNameDefinition("databaseName", LockMode.WRITE, LockLevel.DATABASE), 3000L);
}
@Test
public void assertReleaseLock() {
- shardingSphereDistributedLockManager.releaseLock("databaseName");
+ shardingSphereDistributedLockManager.releaseLock(new DatabaseLockNameDefinition("databaseName", LockMode.READ, LockLevel.DATABASE));
}
@Test
public void assertIsLocked() {
- assertFalse(shardingSphereDistributedLockManager.isLocked("databaseName"));
+ assertFalse(shardingSphereDistributedLockManager.isLocked(new DatabaseLockNameDefinition("databaseName", LockMode.READ, LockLevel.DATABASE)));
}
}