Chu Cheng Li created HDDS-16628:
-----------------------------------

             Summary: SCMContainerPlacementRackAware gives up before trying the 
other used node's rack
                 Key: HDDS-16628
                 URL: https://issues.apache.org/jira/browse/HDDS-16628
             Project: Apache Ozone
          Issue Type: Bug
          Components: SCM
            Reporter: Chu Cheng Li


When ReplicationManager adds a replica for a RATIS container whose used 
replicas are on two racks, {{SCMContainerPlacementRackAware.chooseNode}} looks 
for a node on the rack of each used node (affinity node) in turn. It picks 
random nodes and gives up after {{MAX_RETRY}} (3) of them fail {{isValidNode}}. 
Nodes that are not writable, such as DECOMMISSIONING, DECOMMISSIONED or 
IN_MAINTENANCE nodes, stay in the network topology until they go dead, and each 
one picked uses up a retry.

If the first used node's rack has 3 or more such nodes and no valid node, every 
attempt runs out of retries on that rack and throws "No satisfied datanode to 
meet the space constrains". The other used node's rack and the fallback are 
never tried. The container stays under-replicated, and decommissioning a node 
that holds one of its replicas never completes. The same happens when the nodes 
on that rack are out of space.

An SCM simulation found this: three decommissioned but still running nodes on 
one rack left 15-26 containers under-replicated and a node stuck in 
DECOMMISSIONING.

Fix: give each affinity node's rack its own retries. When they run out, move on 
to the next affinity node's rack, and then to the fallback. Also reword the 
error, which blamed space even when the nodes were out of service.

Tests: two new tests in {{TestSCMContainerPlacementRackAware}}, which fail 
without the fix.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to