-
Notifications
You must be signed in to change notification settings - Fork 258
Save new block tip #4412
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
Save new block tip #4412
Conversation
WalkthroughThe pull request improves error handling in the blockchain code by modifying the Changes
Sequence Diagram(s)sequenceDiagram
participant BC as BlockChain
participant CT as current_tips_hash
participant DS as DAG State Store
participant RT as renew_tips
BC->>CT: Call current_tips_hash(pruning_point)
alt KeyNotFound Error
CT-->>BC: Return KeyNotFound error
BC->>DS: Save new DAG state with parent_header tip
else Other Error
CT-->>BC: Return error
BC-->>BC: Propagate error upwards
else Success
CT-->>BC: Return current tips
end
Note over BC,RT: Invoke tip renewal logic
BC->>RT: Call renew_tips(parent_header, tip_header, tips)
RT-->>DS: Update state based on pruning point check
Suggested reviewers
Poem
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 0
🧹 Nitpick comments (1)
chain/src/chain.rs (1)
1629-1657
: Optimize logging to handle large tip sets gracefully.Logging the entire set of tips at the info level could generate excessive log output if the DAG grows large. Consider only logging the size of the tips or switching to a debug level if the number of tips can become large.
- info!("pruning point not changed, save dag state without prune. tips are {:?}, pruning point is {:?}", tips, tip_header.pruning_point()); + info!( + "pruning point not changed, save dag state without prune. tips count: {}, pruning point is {:?}", + tips.len(), + tip_header.pruning_point() + );
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
chain/src/chain.rs
(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: build and test
🔇 Additional comments (2)
chain/src/chain.rs (2)
1555-1571
: Ensure KeyNotFound scenario is appropriately handled.When encountering a
KeyNotFound
error for the parent pruning point, this logic creates a new DAG state using the parent’s ID as the lone tip. While this is a valid recovery strategy, please confirm that this behavior aligns with the intended chain continuity and that no alternative configuration is inadvertently overwritten.Would you like a script to trace potential orphan states and confirm that the parent block is part of the main lineage before creating a new DAG state?
1624-1627
: Good invocation ofrenew_tips
.Calling
self.renew_tips
ensures tips remain consistent with updated pruning points prior to returning the executed block. The error propagation using?
properly prevents partial state updates.
1, Save the new tips with the new block header not the selected header. If they are the same as another, the main header tips will be affected, else, the sub branch of the main will be affected.
2, Create the tips using parent id if the new block header's parent's pruning point was not saved.
Pull request type
Please check the type of change your PR introduces:
What is the current behavior?
Issue Number: N/A
What is the new behavior?
Other information
Summary by CodeRabbit
New Features
Bug Fixes