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

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

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


##########
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java:
##########
@@ -477,7 +477,10 @@ int getDatanodeWriteTimeout(int numNodes) {
 
   int getDatanodeReadTimeout(int numNodes) {
     final int t = dfsClientConf.getSocketTimeout();
-    return t > 0? HdfsConstants.READ_TIMEOUT_EXTENSION*numNodes + t: 0;
+    int readTimeout = HdfsConstants.READ_TIMEOUT_EXTENSION*numNodes + t;
+    Preconditions.checkArgument(readTimeout >= 0,
+            "Read timeout should be non-negative.");
+    return t > 0? readTimeout: 0;

Review Comment:
   should be something like?
   ```
     int getDatanodeReadTimeout(int numNodes) {
       final int t = dfsClientConf.getSocketTimeout();
       if (t > 0) {
         int readTimeout = HdfsConstants.READ_TIMEOUT_EXTENSION * numNodes + t;
         Preconditions.checkArgument(readTimeout >= 0, "Read timeout should be 
non-negative.");
         return readTimeout;
       }
       return 0;
     }
   ```





> Overflow during getDatanodeReadTimeout
> --------------------------------------
>
>                 Key: HDFS-17196
>                 URL: https://issues.apache.org/jira/browse/HDFS-17196
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 3.3.6
>            Reporter: ConfX
>            Priority: Major
>              Labels: pull-request-available
>
> Datanode read timeout equals to READ_TIMEOUT_EXTENSION * numNodes + 
> `dfs.client.socket-timeout`. A large 
> dfs.client.socket-timeout/numNodes/READ_TIMEOUT_EXTENSION will cause overflow.
>  
> To reproduce:
> 1. set `dfs.client.socket-timeout` to 2147483646
> 2. run `mvn surefire:test 
> -Dtest=org.apache.hadoop.hdfs.server.namenode.ha.TestHASafeMode#testBlocksRemovedWhileInSafeModeEditsArriveFirst`
>  
> We create a PR that provides a fix by checking the read timeout calculation 
> is at least 0.
>  



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