adoroszlai opened a new pull request #1774:
URL: https://github.com/apache/ozone/pull/1774


   ## What changes were proposed in this pull request?
   
   HDDS-4320 added the following logic in `BlockInputStream`:
   
   
https://github.com/apache/ozone/blob/77bf7ad7c1a70e9e1d7aaeb3ec006f19ae8d3089/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockInputStream.java#L287-L292
   
   `handleReadError` tries to refresh the pipeline.  If it gets a new one, read 
is retried on that.  Otherwise it re-throws the exception to exit the loop.
   
   
https://github.com/apache/ozone/blob/77bf7ad7c1a70e9e1d7aaeb3ec006f19ae8d3089/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockInputStream.java#L171-L173
   
   Pipeline equality includes the pipeline ID, but SCM constructs a new 
on-demand pipeline for reading from a single node.  The result is that the 
client thinks there is a new pipeline and retries.
   
   This PR proposes to skip retry if the pipeline has the same set of nodes 
that failed in the previous iteration.
   
   https://issues.apache.org/jira/browse/HDDS-4667
   
   ## How was this patch tested?
   
   Added unit test that reproduces the infinite loop without the fix.


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

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to