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

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

sodonnel commented on PR #4943:
URL: https://github.com/apache/hadoop/pull/4943#issuecomment-1260617216

   Thanks for pinging me on this. I don't think this change is needed from that 
method. This is the call made to `isBlockReplicatedOK()`:
   
   ```
   if (!isBlockReplicatedOk(dn, b, false, null)) {
                 blockList.put(b, null);
               }
   ```
   
   Note the 3rd parameter is `false` (scheduleReconStruction), which means it 
will not schedule replication:
   
   ```
      if (neededReconstruction && scheduleReconStruction) {
         if (!blockManager.neededReconstruction.contains(block) &&
             blockManager.pendingReconstruction.getNumReplicas(block) == 0 &&
             blockManager.isPopulatingReplQueues()) {
           // Process these blocks only when active NN is out of safe mode.
           blockManager.neededReconstruction.add(block,
               liveReplicas, num.readOnlyReplicas(),
               num.outOfServiceReplicas(),
               blockManager.getExpectedRedundancyNum(block));
         }
       }
   ```
   
   There are other places in the code where scheduleReconStruction is passed as 
true, but we do seem to take the write lock in those cases as needed.
   
   Did you see some problem you think this is causing, or did you simply spot 
it during review?




> replace readLock with writeLock in 
> #DatanodeAdminBackoffMonitor.scanDatanodeStorage
> -----------------------------------------------------------------------------------
>
>                 Key: HDFS-16784
>                 URL: https://issues.apache.org/jira/browse/HDFS-16784
>             Project: Hadoop HDFS
>          Issue Type: Bug
>            Reporter: qinyuren
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: image-2022-09-28-15-37-24-622.png
>
>
> In #DatanodeAdminBackoffMonitor.scanDatanodeStorage, it uses a read lock to 
> protect the function #isBlockReplicatedOk.
> But we found that the function #isBlockReplicatedOk may update the 
> #neededReconstruction under certain conditions.
> !image-2022-09-28-15-37-24-622.png!
> Should we replace the read lock with write 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