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

Siyao Meng updated HDDS-17325:
------------------------------
    Epic Link: HDDS-17321

> GrpcOmTransport has no call deadline and ignores interrupts, so a stuck OM 
> blocks the client indefinitely
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: HDDS-17325
>                 URL: https://issues.apache.org/jira/browse/HDDS-17325
>             Project: Apache Ozone
>          Issue Type: Bug
>          Components: Ozone Client
>            Reporter: Siyao Meng
>            Assignee: Siyao Meng
>            Priority: Major
>
> When {{ozone.om.transport.class}} selects the gRPC transport (not the default 
> since HDDS-9446, but used for S3 Gateway in some deployments), 
> {{GrpcOmTransport}}:
> * calls {{submitRequest}} on a blocking stub without a deadline 
> ({{withDeadlineAfter}}), and there is no config key for a call timeout. If 
> the OM accepts the request but never answers (e.g. a stuck handler), the call 
> blocks with no limit, and the failover and retry logic is never reached. A 
> half-open connection is only closed by TCP, after 15 minutes or more.
> * sleeps between retries inside {{catch (Exception e)}}, which only logs, so 
> an interrupt is lost and the retry continues.
> For S3 Gateway, each request that reaches the stuck OM holds a gateway thread 
> until the gateway is restarted.
> Proposed fix: set a per-call deadline from a new config key (a 
> {{StatusRuntimeException}} already goes through the retry and failover 
> policy), and restore the interrupt flag and stop retrying when the thread is 
> interrupted.



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