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

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

ayushtkn commented on code in PR #5329:
URL: https://github.com/apache/hadoop/pull/5329#discussion_r1103772620


##########
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java:
##########
@@ -655,7 +655,7 @@ private int sendPacket(ByteBuffer pkt, int maxChunks, 
OutputStream out,
           if (ioem.startsWith(EIO_ERROR)) {
             throw new DiskFileCorruptException("A disk IO error occurred", e);
           }
-          if (!ioem.startsWith("Broken pipe")
+          if (!ioem.contains("Broken pipe")
               && !ioem.startsWith("Connection reset")) {

Review Comment:
   If I catch it right, in your use case, the cause had an exception, which 
started with Broken Pipe?
   I would say extract the the cause if not null, then do this entire check. 
With your present approach in your case. I doubt if 
``ioem.startsWith("Connection reset")`` this won't work properly, if that is 
also inside the cause, Second doing a contains doesn't look like very safe to 
me either.
   
   Check if something like this can work
   ```
             String causeMessage = e.getCause() != null ? 
e.getCause().getMessage() : "";
             if (!ioem.startsWith("Broken pipe") && 
!ioem.startsWith("Connection reset") &&
                 !causeMessage.startsWith("Broken pipe") && 
!causeMessage.startsWith("Connection reset")) {
   ```





> fix abundant Broken pipe exception in BlockSender
> -------------------------------------------------
>
>                 Key: HDFS-16897
>                 URL: https://issues.apache.org/jira/browse/HDFS-16897
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: hdfs
>    Affects Versions: 3.3.4
>            Reporter: fanluo
>            Priority: Minor
>              Labels: pull-request-available
>
> in our production cluster env , we found some exception in datanode logs,its 
> frequently print below error
> in HDFS-2054 we only ignored message starting with `Broken pipe`  which may 
> not enough for the following case:
> !https://user-images.githubusercontent.com/20748856/215264829-5f16dbc3-fea2-4883-a3d6-ded367564b8c.png!
> this situation look like related to short-circuit read. in HDFS-4354 the 
> error has been wrapped, so that our previous judgment conditions are invalid.
> !https://user-images.githubusercontent.com/20748856/215314257-2064637b-ea46-42f5-b53f-a29e68bb50ea.png!
> maybe we can improve it. 



--
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