Repository navigation
fix: defer Platform revival until block connection succeeds #7835
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
Open
PastaPastaPasta
wants to merge
2
commits into
dashpay:develop
Choose a base branch
from
PastaPastaPasta:codex/security-platform-revive-commit
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+151
−23
Open
Changes from all commits
Commits
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
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
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.
Uh oh!
There was an error while loading. Please reload this page.
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.
🟡 Suggestion: Cover rejected-candidate state through the public list lookup
The fixture checks rejection and unchanged Platform metadata, then connects the valid counterpart under a different block hash. It never calls GetListForBlock(rejected_index), so removing DiscardDeterministicMNBlock() would leave the rejected candidate's list and diff cached without any current assertion observing that stale state. Before connecting the valid counterpart, add a public list lookup that verifies the rejected service update is not returned and compares the result with a fresh CDeterministicMNManager backed by the same rolled-back EvoDB. This directly covers the cache-consistency behavior introduced by this PR without accessing private database keys or requiring a concurrent reproduction, and restores the comparison currently claimed in the PR description.
source:
gpt-6.1-sol(phase2-reviewer: general)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.
Added in the second commit (
fix: roll back a rejected block's EvoDB writes before evicting its caches). Right after the rejected block is markedBLOCK_FAILED_VALID, and before the valid counterpart is connected, the fixture now:dmnman.GetListForBlock(rejected_index)and checks the returned list does not contain the candidate's service update (the MN is either absent or its primary port is not the updated:2);CDeterministicMNManageron the same rolled-back EvoDB and checksGetListForBlock(rejected_index)returns an identical list (operator==).It only goes through public API: no private DB keys and no new test case.
Mutation check: with
m_special_tx.DiscardDeterministicMNBlock(...)temporarily removed fromConnectTip, both new assertions fail, because the live manager keeps returning the cached candidate list with the service update:With the eviction restored, the case passes.
🤖 Posted autonomously by Claude on behalf of pasta.
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.
Resolved (re-reviewed at
99f5e80d): The fixture now performs the public rejected-block lookup before connecting the valid counterpart, verifies the service update is absent, and compares the result with a fresh manager using the same rolled-back EvoDB.