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

Siyao Meng reassigned HDDS-17327:
---------------------------------

    Assignee:     (was: Siyao Meng)

> Topology-aware read tries an unresponsive nearest datanode first for every 
> ReadChunk
> ------------------------------------------------------------------------------------
>
>                 Key: HDDS-17327
>                 URL: https://issues.apache.org/jira/browse/HDDS-17327
>             Project: Apache Ozone
>          Issue Type: Improvement
>          Components: Ozone Client
>            Reporter: Siyao Meng
>            Priority: Major
>
> With {{ozone.network.topology.aware.read}}=true (the default), 
> {{XceiverClientGrpc.sortDatanodes}} orders the replicas by distance for every 
> ReadChunk, and {{sendCommandWithRetry}} tries them in that order. Nothing 
> remembers that a datanode just failed: {{XceiverClientGrpc}} keeps no failed 
> datanodes, and the exclusion in {{ContainerProtocolCalls.tryEachDatanode}} 
> only lasts for one call. If the nearest datanode hangs (e.g. a stuck disk or 
> a long GC pause) instead of refusing connections, every ReadChunk waits 
> {{ozone.client.read.timeout}} (30s) before the next replica answers. A 
> ReadChunk is sent for each read call within a chunk, so by calculation 
> reading a 256MB block with 4MB reads takes up to 64 × 30s, about 32 minutes, 
> longer.
> HDDS-16419 removes the nested N × N failover, but keeps the same order for 
> each call.
> Proposed fix: keep a set of datanodes that failed recently, with an expiry 
> like {{ozone.client.exclude.nodes.expiry.time}} on the write side, and try 
> them last.



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