[ 
https://issues.apache.org/jira/browse/HDFS-17777?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18072472#comment-18072472
 ] 

ASF GitHub Bot commented on HDFS-17777:
---------------------------------------

ZanderXu commented on code in PR #8325:
URL: https://github.com/apache/hadoop/pull/8325#discussion_r3061658176


##########
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/ExcessRedundancyMap.java:
##########
@@ -40,6 +42,7 @@ class ExcessRedundancyMap {
 
   private final Map<String, LightWeightHashSet<Block>> map = new HashMap<>();

Review Comment:
   ```
   private final Map<String, LightWeightHashSet<Block>> map = new 
ConcurrentHashMap<>();
   
   int getSize4Testing(String dnUuid) {
       final LightWeightHashSet<Block> set = map.get(dnUuid);
       if (set == null) {
         return 0;
       }
       synchronized (set) {
         return set.size();
       }
     }
   ```
   
   Thanks @balodesecurity for your report. How about replacing the 
ReentrantReadWriteLock with synchronization on the set?





> Improve ExcessRedundancyMap locking semantics
> ---------------------------------------------
>
>                 Key: HDFS-17777
>                 URL: https://issues.apache.org/jira/browse/HDFS-17777
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: namenode
>    Affects Versions: 3.4.0, 3.3.6, 3.4.1
>            Reporter: William Montaz
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: Capture d’écran 2025-04-30 à 14.32.41.png
>
>
> ExcessRedundancyMap introduce in HDFS-9838  uses synchronized keyword for 
> threadsafety. However prior to introduce this class, the operations such as 
> contains were made without a new lock, they were called inside BlockManager 
> with verification that the fsNamesystem lock was held in read or write mode 
> depending on the situation.
>  
> ExcessRedundancyMap now forces all thread to grab the same exclusive lock, 
> even if in general a lot more read are performed on the class.
>  
> By using a ReentrantReadWriteLock for ExcessRedundancyMap we could improve 
> throughput of the namenode. Another approach could be to introduce the same 
> asserts on namesystem lock as it seems those methods are always called in the 
> context of the FSNamesystem lock.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to