-
Notifications
You must be signed in to change notification settings - Fork 1.7k
fix: Re-store nodes missing from both backends during online_delete rotation #7763
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+91
−3
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
c364ebb
fix: Persist RAM-only clean nodes during online-delete rotation
sophiax851 fee6e32
Merge branch 'develop' into fix/rotation-missing-node
sophiax851 40c6353
fix: Copy archive reads forward during rotation to prevent node loss
sophiax851 6b23ee7
Apply pre-commit hook fixes
sophiax851 0c2ff67
Apply clangr-tidy change
sophiax851 13e7c89
Use relaxed ordering for stats-only copy-forward counter
sophiax851 0312291
Update src/xrpld/app/misc/SHAMapStoreImp.cpp
sophiax851 ed2a3a9
Fix precommit and clang tidy issues
sophiax851 2eed1cc
Merge branch 'develop' into fix/rotation-missing-node
sophiax851 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nit]
copyForwardCount_can usestd::memory_order_relaxedon both the increment (fetch_add) and theexchange(0). This counter is stats-only — its value feeds a single log line and gates no other memory access — so atomicity alone is sufficient.operator++in particular currently defaults toseq_cst, which is the strongest (and most expensive) ordering. Switching to explicitfetch_add(1, std::memory_order_relaxed)is a small performance win.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. I made the change though AI says: "Performance: real but negligible here. On x86-64, a seq_cst and a relaxed fetch_add compile to the identical lock xadd instruction — zero difference. On ARM (Apple Silicon, Graviton) there is a genuine difference ( ldadd vs ldaddal with acquire-release semantics). But context matters: this increment executes only on archive-backend hits during a rotation window, on a path that just completed a backend disk fetch and is about to do a backend store. A saved fence is unmeasurable next to the I/O on either side of it. The exchange(0) runs once per rotation (roughly hourly) — irrelevant either way."