Skip to content

HDDS-16465. Validate snapshot chains before mutation - #11253

Open
andyhuangdev wants to merge 2 commits into
apache:masterfrom
andyhuangdev:HDDS-16465
Open

andyhuangdev wants to merge 2 commits into
apache:masterfrom
andyhuangdev:HDDS-16465

Conversation

@andyhuangdev

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

SnapshotChainManager updates the global snapshot chain before updating the per-path chain. If path validation fails, the global chain remains changed while the path chain does not.

For example, adding a snapshot with a valid global predecessor but a missing path predecessor throws an exception after inserting the snapshot into the global chain. Similarly, deleting a snapshot with a mismatched path removes its global entry while leaving its path entry intact.

This change validates both chains before modifying either, under the existing synchronized methods. Deletion checks membership and neighbors in both chains and rejects inconsistent membership before removing the snapshot.

What is the link to the Apache JIRA

HDDS-16465

How was this patch tested?

Added regression tests covering failed insertion into empty and nonempty chains, and deletion with a mismatched path.

All 20 tests in TestSnapshotChain passed. Checkstyle and git diff --check passed.

Validate global and path chains before adding or deleting snapshots to prevent partial updates when validation fails. Reject inconsistent deletion membership and add regression coverage for failed operations.

Tests: TestSnapshotChain (20 passed), checkstyle, git diff --check.
@andyhuangdev

Copy link
Copy Markdown
Contributor Author

cc @chungen0126 @Russole

@jojochuang jojochuang added the snapshot https://issues.apache.org/jira/browse/HDDS-6517 label Sep 18, 2026

@smengcl smengcl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

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

Labels

snapshot https://issues.apache.org/jira/browse/HDDS-6517

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants