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

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

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


##########
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java:
##########
@@ -2310,10 +2310,10 @@ private void invalidate(String bpid, Block[] 
invalidBlks, boolean async)
       throws IOException {
     final List<String> errors = new ArrayList<String>();
     for (int i = 0; i < invalidBlks.length; i++) {
-      final ReplicaInfo removing;
+      final ReplicaInfo info;

Review Comment:
   How about just move the IO request out of the lock?
   ```
           try {
             File blockFile = new File(info.getBlockURI());
             if (blockFile != null && blockFile.getParentFile() == null) {
               errors.add("Failed to delete replica " + invalidBlks[i]
                   +  ". Parent not found for block file: " + blockFile);
               continue;
             }
           } catch(IllegalArgumentException e) {
             LOG.warn("Parent directory check failed; replica {} is " +
                 "not backed by a local file", info);
           }
   ```





> Improve async delete replica on datanode
> ----------------------------------------
>
>                 Key: HDFS-16774
>                 URL: https://issues.apache.org/jira/browse/HDFS-16774
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>            Reporter: Haiyang Hu
>            Assignee: Haiyang Hu
>            Priority: Major
>              Labels: pull-request-available
>
> In our online cluster, a large number of ReplicaNotFoundExceptions occur when 
> client reads the data.
> After tracing the root cause, it is caused by the asynchronous deletion of 
> the replica operation has  many stacked pending deletion  caused 
> ReplicationNotFoundException.
> Current the asynchronous delete of the replica operation process is as 
> follows:
> 1.remove the replica from the ReplicaMap
> 2.delete the replica file on the disk [blocked in threadpool]
> 3.notifying namenode through IBR [blocked in threadpool]
> In order to avoid similar problems as much as possible, consider optimizing 
> the execution flow:
> The deleting replica from ReplicaMap, deleting replica from disk and 
> notifying namenode through IBR are processed in the same asynchronous thread.



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

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

Reply via email to