[ 
https://issues.apache.org/jira/browse/HDDS-17635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Soldatov updated HDDS-17635:
-----------------------------------
        Parent: HDDS-10338
    Issue Type: Sub-task  (was: Bug)

> Datanode ReadBlock: a cancelled streaming call is not a container failure
> -------------------------------------------------------------------------
>
>                 Key: HDDS-17635
>                 URL: https://issues.apache.org/jira/browse/HDDS-17635
>             Project: Apache Ozone
>          Issue Type: Sub-task
>          Components: Ozone Datanode
>    Affects Versions: 2.2.2
>            Reporter: Sergey Soldatov
>            Assignee: Sergey Soldatov
>            Priority: Minor
>
> When a client of a streaming ReadBlock cancels the call, or its connection 
> drops while the datanode is still sending responses, gRPC raises 
> Status.CANCELLED from StreamObserver.onNext. KeyValueHandler.readBlock 
> catches it in its generic catch (Exception) and turns it into a 
> CONTAINER_INTERNAL_ERROR response. As a result, the datanode:
>  * logs an ERROR with a full stack trace,
>  * writes a READ_BLOCK FAILURE audit entry,
>  *  triggers an on-demand scan of a healthy container 
> (HddsDispatcher.streamDataReadOnly scans on every non-null error response),
>  * tries to write the error response back on a call that is already gone
> This is raised whenever the call is cancelled while the datanode is still 
> streaming: the client cancels the stream after a checksum failure, the client 
> closes its XceiverClientGrpc (shutdownNow(), for example on client cache 
> eviction), the client process exits, or the connection drops. A clean close 
> or seek on StreamBlockInputStream half-closes the call and does not trigger 
> it. A cancelled call is a peer or transport event, not a container fault.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

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

Reply via email to