Skip to content

HDDS-15346. DiskBalancer should update delta sizes atomically.#10333

Open
slfan1989 wants to merge 1 commit into
apache:masterfrom
slfan1989:HDDS-15346
Open

HDDS-15346. DiskBalancer should update delta sizes atomically.#10333
slfan1989 wants to merge 1 commit into
apache:masterfrom
slfan1989:HDDS-15346

Conversation

@slfan1989
Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

This PR updates DiskBalancer delta size tracking to use atomic map updates.

DiskBalancer uses deltaSizes to track scheduled bytes per source volume. Previously, some updates were done with separate read and write operations, such as getOrDefault(...) followed by put(...). These operations are not atomic, so concurrent DiskBalancer tasks updating the same source volume could overwrite each other and leave an incorrect delta size.

This change introduces helper methods to reserve and release delta size using ConcurrentHashMap.compute(...), so each per-volume update is applied atomically. It also removes zero-value entries after the reserved bytes are fully released.

A unit test is added to cover concurrent task completion and verify that the delta size is restored correctly.

What is the link to the Apache JIRA

JIRA: HDDS-15346. DiskBalancer should update delta sizes atomically.

How was this patch tested?

Added unit test.

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.

1 participant