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