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

Shashikant Banerjee edited comment on HDDS-959 at 1/7/19 8:55 AM:
------------------------------------------------------------------

Thanks [~ljain] for the patch. The patch looks good overall to me. Some 
comments:
 # In case of preallocation of blocks, there is a possibility that multiple 
blocks write on the same pipeline using the same XceiverClientSpi object. In 
case, one block write fails with AlreadyClosedException or 
RaftRetryFailureException, right now fail one and move on to the next bock 
which will still fail since it still has the reference to the old 
XceiverClientSpi object. In such cases, i think what we can do is refresh the 
XceiverClientSpi instance by doing release of the old one and reacquiring a 
client instance back.
 # KeyOutputStream#checkForException :-> instead of passing a variable no of 
exception classes to be checked from multiple functions, we can maintain a 
static array/list of Exception Classes and use it .
 # Adding some more comments on why and how AlreadyClosedException is handled 
will be insightful.


was (Author: shashikant):
Thanks [~ljain] for the patch. The patch looks good overall to me. Some 
comments:
 # In case of preallocation of blocks, there is a possibility that multiple 
blocks write on the same pipeline using the same XceiverClientSpi object. In 
case, one block write fails with AlreadyClosedException or 
RaftRetryFailureException, right now fail one and move on to the next bock 
which will still fail since it still has the reference to the old 
XceiverClientSpi object. In such cases, i think what we can do is refresh the 
XceiverClientSpi instance by doing release of the old one and reacquiring a 
client instance back.
 # KeyOutputStream#checkForException : > instead of passing a variable no of 
exception classes to be checked from mutiple functions, we can maintain a 
static array/list of Exception Classes and use it .
 # Adding some more comments on why and how AlreadyClosedException is handled 
will be insightful.

> KeyOutputStream should handle retry failures
> --------------------------------------------
>
>                 Key: HDDS-959
>                 URL: https://issues.apache.org/jira/browse/HDDS-959
>             Project: Hadoop Distributed Data Store
>          Issue Type: Bug
>            Reporter: Lokesh Jain
>            Assignee: Lokesh Jain
>            Priority: Major
>         Attachments: HDDS-959.001.patch, HDDS-959.002.patch
>
>
> With ratis version updated to 0.4.0-a8c4ca0-SNAPSHOT, retry failures are 
> fatal for a raft client. If an operation in raft client does not succeed 
> after maximum number of retries(RaftRetryFailureException) all subsequent 
> operations are failed with AlreadyClosedException. This jira aims to handle 
> such exceptions. Since we maintain a cache for clients in 
> XceiverClientManager, the corresponding client needs to be invalidated in the 
> cache.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to