HDDS-15184. Atomic Create-If-Absent Should Use 0 for Generation Match#10201
Merged
peterxcli merged 1 commit intoapache:masterfrom May 6, 2026
Merged
HDDS-15184. Atomic Create-If-Absent Should Use 0 for Generation Match#10201peterxcli merged 1 commit intoapache:masterfrom
peterxcli merged 1 commit intoapache:masterfrom
Conversation
Signed-off-by: peterxcli <peterxcli@gmail.com>
ivandika3
approved these changes
May 6, 2026
Member
Author
|
Thanks @ivandika3 for the review and the info! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes were proposed in this pull request?
We currently use an expected data generation of -1 to represent “create if absent”. In contrast, GCS uses
-if-generation-match=0for its create-if-absent semantics.One potential concern is whether the first object we create in Ozone could have a generation/update ID of 0, which would conflict with this encoding. In practice, this does not happen: committed keys in Ozone derive their updateID from the Ratis transaction index at commit time. The very first Ratis index (0) is reserved for startup/configuration log state before any client writes, so actual OM write requests always receive positive indices. As a result, committed keys will never have
updateID == 0, and using 0 to encode “absent” is safe.relate to: #9332
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-15184
How was this patch tested?
existing test