amaliujia commented on code in PR #10479:
URL: https://github.com/apache/ozone/pull/10479#discussion_r3432740184
##########
hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/StreamBlockInputStream.java:
##########
@@ -327,10 +338,14 @@ synchronized void readBlockImpl(long length) throws
IOException {
}
private void handleExceptions(IOException cause) throws IOException {
- if (cause instanceof StorageContainerException ||
isConnectivityIssue(cause)) {
- if (shouldRetryRead(cause, retryPolicy, retries++)) {
+ IOException root = unwrapCause(cause);
+ if (root instanceof StorageContainerException || isConnectivityIssue(root)
||
+ root instanceof TimeoutIOException) {
+ if (shouldRetryRead(root, retryPolicy, retries++)) {
+ recordFailedStreamingDatanode();
Review Comment:
Just trying to learn the context, why do we want to skip reading from some
of the datanodes even if we decide should retry? From the below
implementation, it seems just to say that if there was already an attempt to
read and there was a response, then we fetch the datanode id from the response,
and then say it is a failed datanode and we should skip it.
Probably I have missed some context but the way to exclude datanode is not
very convincing here.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]