Siyao Meng created HDDS-17322:
---------------------------------

             Summary: Datanode heartbeat to an unreachable SCM or Recon can 
block about 15 minutes on connect timeout retries
                 Key: HDDS-17322
                 URL: https://issues.apache.org/jira/browse/HDDS-17322
             Project: Apache Ozone
          Issue Type: Bug
          Components: Ozone Datanode
            Reporter: Siyao Meng
            Assignee: Siyao Meng


{{SCMConnectionManager}} creates the Datanode's RPC proxies to SCM and Recon 
with {{retryUpToMaximumCountWithFixedSleep(15, 1s)}}. That policy only covers 
connection failures such as "connection refused". A connect timeout (the host 
drops packets: a stopped VM, a firewall DROP rule, a stale Kubernetes pod IP) 
is handled separately by the forked {{ipc_.Client}}, which retries it 
{{ipc.client.connect.max.retries.on.timeouts}} (45) times with 
{{ipc.client.connect.timeout}} (20s) each. By calculation that is about 15 
minutes per call. Neither key is overridden for these proxies.

{{RunningDatanodeState}} waits for an endpoint task for at most one heartbeat 
interval but does not cancel it, and each endpoint runs its tasks on a single 
thread with an unbounded queue (see HDDS-17269). So while an SCM is unreachable 
this way, one heartbeat task is queued per interval and each one blocks for 
about 15 minutes. Each missed heartbeat takes about 15 minutes instead of one 
interval, so re-resolving the SCM address after 
{{hdds.heartbeat.address.refresh.missed.count.threshold}} missed heartbeats 
(when enabled) is delayed by the same factor.

Proposed fix: create these proxies with 
{{ipc.client.connect.max.retries.on.timeouts}} set to 0 unless it is set 
explicitly, as HDDS-17310 does for the OM and SCM client failover proxies, and 
let the Datanode's own retry policy and heartbeat cycle handle the retries.



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