adoroszlai commented on code in PR #8446:
URL: https://github.com/apache/ozone/pull/8446#discussion_r2094107180


##########
hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/lock/OzoneManagerLock.java:
##########
@@ -243,47 +258,45 @@ private void acquireLock(Resource resource, boolean 
isReadLock, ReadWriteLock lo
     }
   }
 
-  private OMLockDetails acquireLocks(Resource resource, boolean isReadLock,
-                                    Collection<String[]> keys) {
-    omLockDetails.get().clear();
-    if (!resource.canLock(lockSet.get())) {
+  private OMLockDetails acquireLocks(Resource resource, boolean isReadLock, 
Collection<String[]> keys) {
+    Pair<Map<Resource, Striped<ReadWriteLock>>, ResourceLockManager> 
resourceLockPair =
+        resourcelockMap.get(resource.getClass());
+    ResourceLockManager<Resource> resourceLockManager = 
resourceLockPair.getRight();
+    resourceLockManager.clearLockDetails();
+    if (!resourceLockManager.canLockResource(resource)) {
       String errorMessage = getErrorMessage(resource);
       LOG.error(errorMessage);
       throw new RuntimeException(errorMessage);
     }
 
     long startWaitingTimeNanos = Time.monotonicNowNanos();
 
-    for (ReadWriteLock lock : bulkGetLock(resource, keys)) {
+    for (ReadWriteLock lock : bulkGetLock(resourceLockPair.getKey(), resource, 
keys)) {
       acquireLock(resource, isReadLock, lock, startWaitingTimeNanos);
     }
-
-    lockSet.set(resource.setLock(lockSet.get()));
-    omLockDetails.get().setLockAcquired(true);
-    return omLockDetails.get();
+    return resourceLockManager.lockResource(resource);
   }
 
-  private OMLockDetails acquireLock(Resource resource, boolean isReadLock,
-      String... keys) {
-    omLockDetails.get().clear();
-    if (!resource.canLock(lockSet.get())) {
+  private OMLockDetails acquireLock(Resource resource, boolean isReadLock, 
String... keys) {
+    Pair<Map<Resource, Striped<ReadWriteLock>>, ResourceLockManager> 
resourceLockPair =
+        resourcelockMap.get(resource.getClass());
+    ResourceLockManager<Resource> resourceLockManager = 
resourceLockPair.getRight();
+    resourceLockManager.clearLockDetails();
+    if (!resourceLockManager.canLockResource(resource)) {
       String errorMessage = getErrorMessage(resource);
       LOG.error(errorMessage);
       throw new RuntimeException(errorMessage);
     }
 
     long startWaitingTimeNanos = Time.monotonicNowNanos();
 
-    ReentrantReadWriteLock lock = getLock(resource, keys);
+    ReentrantReadWriteLock lock = getLock(resourceLockPair.getKey(), resource, 
keys);
     acquireLock(resource, isReadLock, lock, startWaitingTimeNanos);
-
-    lockSet.set(resource.setLock(lockSet.get()));
-    omLockDetails.get().setLockAcquired(true);
-    return omLockDetails.get();
+    return resourceLockManager.lockResource(resource);
   }
 
   private void updateReadLockMetrics(Resource resource,
-      ReentrantReadWriteLock lock, long startWaitingTimeNanos) {
+                                     ReentrantReadWriteLock lock, long 
startWaitingTimeNanos) {

Review Comment:
   There are more.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org
For additional commands, e-mail: issues-h...@ozone.apache.org

Reply via email to