[
https://issues.apache.org/jira/browse/HDDS-15658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ashish Kumar updated HDDS-15658:
--------------------------------
Issue Type: Task (was: Improvement)
> No validation that moveReplicationTimeout < moveTimeout, can produce expired
> delete deadlines
> ---------------------------------------------------------------------------------------------
>
> Key: HDDS-15658
> URL: https://issues.apache.org/jira/browse/HDDS-15658
> Project: Apache Ozone
> Issue Type: Task
> Reporter: Ashish Kumar
> Priority: Major
>
> The delete deadline is computed as:
> {code:java}
> containerInfo, replicaIndex, datanode, true, moveStartTime + moveTimeout);
> {code}
> The replication deadline is:
> {code:java}
> replicaIndex, src, tgt, now + replicationTimeout); {code}
> {{{}replicationDeadline = now + replicationTimeout{}}}, {{{}deleteDeadline =
> moveStart + moveTimeout{}}}.
> For deletion to have any valid time window, {{moveTimeout >
> replicationTimeout}} must hold. But there is no config validation enforcing
> this. If an operator configures:
> moveReplicationTimeout = 60min
> moveTimeout = 60min (or even < 60min)
> Then:
> * Replication can take up to 60 min
> * {{deleteDeadline = moveStart + 60min,}} already at or PAST the deadline
> when replication finishes
> * The DN receives a delete command with an expired deadline and ignores it
> * The source replica is never deleted. Container remains permanently
> over-replicated
> * RM eventually cleans it up, but it could take the next RM cycle
>
> Add validation at startup:
>
> {code:java}
> if (moveReplicationTimeout >= moveTimeout) {
> throw new IllegalArgumentException("moveReplicationTimeout must be <
> moveTimeout to allow time for deletion");
> } {code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]