This is an automated email from the ASF dual-hosted git repository.

casion pushed a commit to branch dev-1.3.0
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git


The following commit(s) were added to refs/heads/dev-1.3.0 by this push:
     new 19efbe452 Optimize the performance of the Manager's distributed locks 
close #2929 (#2930)
19efbe452 is described below

commit 19efbe4529d08d7f0e528e9408ab63b02cdb8001
Author: peacewong <[email protected]>
AuthorDate: Mon Aug 22 22:26:18 2022 +0800

    Optimize the performance of the Manager's distributed locks close #2929 
(#2930)
---
 .../persistence/impl/DefaultLockManagerPersistence.java      | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLockManagerPersistence.java
 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLockManagerPersistence.java
index 82b0fc026..0236cd61a 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLockManagerPersistence.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/persistence/impl/DefaultLockManagerPersistence.java
@@ -59,8 +59,16 @@ public class DefaultLockManagerPersistence implements 
LockManagerPersistence {
 
   private boolean tryLock(PersistenceLock persistenceLock, Long timeOut) {
     try {
-      lockManagerMapper.lock(persistenceLock.getLockObject(), timeOut);
-      return true;
+      List<PersistenceLock> lockers =
+          
lockManagerMapper.getLockersByLockObject(persistenceLock.getLockObject());
+      if (lockers == null || lockers.isEmpty()) {
+        lockManagerMapper.lock(persistenceLock.getLockObject(), timeOut);
+        return true;
+      } else {
+        logger.info(
+            "Failed to obtain lock {} ,Because locker is exists", 
persistenceLock.getLockObject());
+        return false;
+      }
     } catch (DataAccessException e) {
       logger.warn("Failed to obtain lock:" + persistenceLock.getLockObject());
       return false;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to