Skip to content

HDDS-15072. [SCM] Implement dynamic load-based switching to reconstruction for EC decommission#10123

Draft
jojochuang wants to merge 5 commits into
apache:masterfrom
jojochuang:HDDS-15072
Draft

HDDS-15072. [SCM] Implement dynamic load-based switching to reconstruction for EC decommission#10123
jojochuang wants to merge 5 commits into
apache:masterfrom
jojochuang:HDDS-15072

Conversation

@jojochuang

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

HDDS-15072. [SCM] Implement dynamic load-based switching to reconstruction for EC decommission

Please describe your PR in detail:

  • Enhance ReplicationManager to calculate a Datanode's load factor using its current queue and the effective replication limit (including
    outofservice.limit.factor). Modify ECUnderReplicationHandler to dynamically switch from 1-1 replication to reconstruction when a source Datanode's load
    exceeds the threshold. Implement "source offloading" logic to ensure that when reconstruction is triggered, the SCM prefers healthy replicas on other
    nodes as sources, bypassing the bottlenecked node.

What is the link to the Apache JIRA

https://issues.apache.org/jira/browse/HDDS-15072

How was this patch tested?

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

This PR has been marked as stale due to 21 days of inactivity. Please comment or remove the stale label to keep it open. Otherwise, it will be automatically closed in 7 days.

@github-actions github-actions Bot added the stale label Jul 3, 2026
jojochuang and others added 4 commits July 6, 2026 15:16
Set hdds.scm.replication.reconstruction.global.limit default to 0 so
cluster-wide EC reconstruction throttling is opt-in and default behavior
matches pre-PR Ozone.

Co-authored-by: Cursor <cursoragent@cursor.com>
Change-Id: I6a0915cf8b181a1a98b08a4f3ede071e4d460e88
… reset.

Move global reconstruction throttling from the under-replicated processor
loop to sendThrottledReconstructionCommand so 1-1 replication continues
when the cap is reached. Clear reconstruction counters on leader transition
when pending ops are cleared.

Co-authored-by: Cursor <cursoragent@cursor.com>
Change-Id: I881fee0c3ea3c2e350b8fbb95321985569bef636
Skip reconstruction counter decrements when the command is no longer
tracked after notifyStatusChanged clear, and floor decrements at zero.

Co-authored-by: Cursor <cursoragent@cursor.com>
Change-Id: I1530348aa2b09c232ad0410468d90cf098d8d0a3
…ction for EC decommission

Change-Id: Ie4b8662b10de5d3e73312f6b18ac825853dfd72e
@smengcl

smengcl commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

The PR branch is quite a bit behind base branch (437 commits behind). Consider rebasing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants