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