perf: minimize necessary execution on recvpacket checktx#6302
perf: minimize necessary execution on recvpacket checktx#6302colin-axner merged 5 commits intomainfrom
Conversation
WalkthroughWalkthroughThe recent changes in the Changes
Possibly related issues
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 as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
Out of diff range and nitpick comments (1)
modules/core/ante/ante.go (1)
4-5: Consider grouping standard library imports separately from third-party imports for better readability according to the Go style guide.
Review Details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (2)
- modules/core/ante/ante.go (3 hunks)
- modules/core/ante/ante_test.go (3 hunks)
Additional Context Used
Path-based Instructions (2)
modules/core/ante/ante.go (1)
Pattern
**/*.go: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.modules/core/ante/ante_test.go (2)
Pattern
**/*.go: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"
Additional comments not posted (5)
modules/core/ante/ante.go (2)
35-43: The conditional logic inside theAnteHandlefunction for handlingMsgRecvPackettypes introduces a new methodrecvPacketCheckTxfor the check transaction context. Ensure that this method is thoroughly tested to handle all edge cases, especially since it bypasses some of the standard processing inRecvPacket.
105-129: The implementation ofrecvPacketCheckTxis crucial for the performance improvement. It's good to see error wrapping used for better error context. However, ensure that the error messages are clear and provide enough information for debugging. Also, consider adding more detailed comments explaining the rationale behind each step, especially the use ofCacheContextwhich is critical for avoiding state changes during simulations.modules/core/ante/ante_test.go (3)
4-4: The import of thefmtpackage is appropriate given its usage in the new test case for simulating an application callback error. This is a good use of the package for generating error messages in test scenarios.
347-359: The new test case "success on app callback error, app callbacks are skipped for performance" is crucial for validating the performance improvements by skipping application callbacks. Ensure that this test case adequately simulates the conditions under which therecvPacketCheckTxwould be used in production to verify its effectiveness and robustness.
470-477: The test case "no success on recvPacket checkTx, no capability found" is important for ensuring robust error handling inrecvPacketCheckTx. It tests the scenario where no capability is found, which should be a critical error case. This is a good addition to ensure the function behaves correctly under failure scenarios.
damiannolan
left a comment
There was a problem hiding this comment.
Very clean! :)
I like the godoc comments and tests, very nice! ❤️
modules/core/ante/ante.go
Outdated
| response *channeltypes.MsgRecvPacketResponse | ||
| err error | ||
| ) | ||
| if ctx.IsCheckTx() { |
There was a problem hiding this comment.
So confusing to have isCheckTx/isReCheckTx and ExecMode() 😅
Just noting for reviewers that here we are in CheckTxMode explicitly because we've checked also !simulate above on L28.
On the v0.50+ line there is union between IsCheckTx=true and ExecMode == execModeSimulate (after cosmos/cosmos-sdk#20346). i.e. when IsCheckTx is true when in execModeSimulate (this is because simulateTx runs on the checkState multistore)
There was a problem hiding this comment.
I guess this is where it should be the other way around like you mentioned @colin-axner. When recheckTx=true then checkTx=true... because ¯_(ツ)_/¯
There was a problem hiding this comment.
Actionable comments posted: 0
Review Details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (2)
- modules/core/ante/ante.go (3 hunks)
- modules/core/ante/ante_test.go (4 hunks)
Files skipped from review as they are similar to previous changes (2)
- modules/core/ante/ante.go
- modules/core/ante/ante_test.go
There was a problem hiding this comment.
Actionable comments posted: 0
Out of diff range and nitpick comments (2)
CHANGELOG.md (2)
Line range hint
179-179: Consider using descriptive text for URLs to improve readability and accessibility.- * [\#6193](https://github.com/cosmos/ibc-go/pull/6193) Bump Cosmos SDK to v0.50.6. + * [\#6193](Bump Cosmos SDK to v0.50.6)[https://github.com/cosmos/ibc-go/pull/6193]
Line range hint
194-194: Remove trailing spaces to maintain clean and consistent formatting in the document.- * (core/ante) [\#6302](https://github.com/cosmos/ibc-go/pull/6302) Performance: Skip app callbacks during RecvPacket execution in checkTx within the redundant relay ante handler. + * (core/ante) [\#6302](https://github.com/cosmos/ibc-go/pull/6302) Performance: Skip app callbacks during RecvPacket execution in checkTx within the redundant relay ante handler.Also applies to: 244-244
Review Details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (1)
- CHANGELOG.md (1 hunks)
Additional Context Used
Path-based Instructions (1)
CHANGELOG.md (1)
Pattern
**/*.md: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"
|
* perf: only perform core ibc logic on recvpacket checktx * try me linter * fix: reorder if and add comment * chore: add changelog entry (cherry picked from commit 0993246) # Conflicts: # CHANGELOG.md # modules/core/ante/ante.go # modules/core/ante/ante_test.go
* perf: only perform core ibc logic on recvpacket checktx * try me linter * fix: reorder if and add comment * chore: add changelog entry (cherry picked from commit 0993246) # Conflicts: # CHANGELOG.md # modules/core/ante/ante.go # modules/core/ante/ante_test.go
* perf: only perform core ibc logic on recvpacket checktx * try me linter * fix: reorder if and add comment * chore: add changelog entry (cherry picked from commit 0993246) # Conflicts: # CHANGELOG.md # modules/core/ante/ante.go # modules/core/ante/ante_test.go
) (#6333) * perf: minimize necessary execution on recvpacket checktx (#6302) * perf: only perform core ibc logic on recvpacket checktx * try me linter * fix: reorder if and add comment * chore: add changelog entry (cherry picked from commit 0993246) # Conflicts: # CHANGELOG.md # modules/core/ante/ante.go # modules/core/ante/ante_test.go * fix: merge conflicts --------- Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
) (#6334) * perf: minimize necessary execution on recvpacket checktx (#6302) * perf: only perform core ibc logic on recvpacket checktx * try me linter * fix: reorder if and add comment * chore: add changelog entry (cherry picked from commit 0993246) # Conflicts: # CHANGELOG.md # modules/core/ante/ante.go # modules/core/ante/ante_test.go * fix: merge conflicts --------- Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
) (#6335) * perf: minimize necessary execution on recvpacket checktx (#6302) * perf: only perform core ibc logic on recvpacket checktx * try me linter * fix: reorder if and add comment * chore: add changelog entry (cherry picked from commit 0993246) # Conflicts: # CHANGELOG.md # modules/core/ante/ante.go # modules/core/ante/ante_test.go * fix: merge conflicts --------- Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>




Description
implements suggestion started in #6248
ref: #6232
can be backported to any release line as patch release
Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.
docs/).godoccomments.Files changedin the GitHub PR explorer.SonarCloud Reportin the comment section below once CI passes.Summary by CodeRabbit
New Features
RecvPacketexecution incheckTxwithin the redundant relay ante handler.Bug Fixes
OnRecvPacketcallbacks andRecvPacketmessages to ensure robust handling and stability.