You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Eric Badger (Jira)" <ji...@apache.org> on 2019/12/20 19:04:00 UTC

[jira] [Reopened] (HDFS-15062) Add LOG when sendIBRs failed

     [ https://issues.apache.org/jira/browse/HDFS-15062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Badger reopened HDFS-15062:
--------------------------------

This patch breaks branch-3.2 and branch-3.1 compilation. Remember that you always need to compile the code on each branch before you merge. 

> Add LOG when sendIBRs failed
> ----------------------------
>
>                 Key: HDFS-15062
>                 URL: https://issues.apache.org/jira/browse/HDFS-15062
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: datanode
>    Affects Versions: 3.0.3, 3.2.1, 3.1.3
>            Reporter: Fei Hui
>            Assignee: Fei Hui
>            Priority: Major
>             Fix For: 3.0.4, 3.3.0, 3.1.4, 3.2.2
>
>         Attachments: HDFS-15062.001.patch, HDFS-15062.002.patch, HDFS-15062.003.patch
>
>
> {code}
>   /** Send IBRs to namenode. */
>   void sendIBRs(DatanodeProtocol namenode, DatanodeRegistration registration,
>       String bpid, String nnRpcLatencySuffix) throws IOException {
>     // Generate a list of the pending reports for each storage under the lock
>     final StorageReceivedDeletedBlocks[] reports = generateIBRs();
>     if (reports.length == 0) {
>       // Nothing new to report.
>       return;
>     }
>     // Send incremental block reports to the Namenode outside the lock
>     if (LOG.isDebugEnabled()) {
>       LOG.debug("call blockReceivedAndDeleted: " + Arrays.toString(reports));
>     }
>     boolean success = false;
>     final long startTime = monotonicNow();
>     try {
>       namenode.blockReceivedAndDeleted(registration, bpid, reports);
>       success = true;
>     } finally {
>       if (success) {
>         dnMetrics.addIncrementalBlockReport(monotonicNow() - startTime,
>             nnRpcLatencySuffix);
>         lastIBR = startTime;
>       } else {
>         // If we didn't succeed in sending the report, put all of the
>         // blocks back onto our queue, but only in the case where we
>         // didn't put something newer in the meantime.
>         putMissing(reports);
>       }
>     }
>   }
> {code}
> When call namenode.blockReceivedAndDelete failed, will put reports to pendingIBRs. Maybe we should add log for failed case. It is helpful for trouble shooting



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-help@hadoop.apache.org