-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
feat(core/coretesting): make memDB satisfy db.Db interface #22570
Conversation
📝 Walkthrough📝 WalkthroughWalkthroughThe changes in this pull request introduce new methods to the Changes
Assessment against linked issues
Possibly related PRs
Suggested labels
Suggested reviewers
📜 Recent review detailsConfiguration used: .coderabbit.yml 📒 Files selected for processing (1)
🧰 Additional context used📓 Path-based instructions (1)tests/go.mod (1)Pattern 🔇 Additional comments (1)tests/go.mod (1)
The addition of
✅ Verification successfulLet me gather more information about the DB interface changes to understand if this specific pre-release version is necessary. Let me check the actual usage in the integration test file and the latest stable version's interface. Pre-release version appears necessary for interface compatibility Based on the verification:
The pre-release version seems justified as it contains necessary interface changes for type compatibility. 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Description: Verify the cosmos-db dependency version and check for any security advisories
# Check available versions
echo "Available versions:"
gh api repos/cosmos/cosmos-db/tags --jq '.[].name'
# Check for security advisories
echo "Security advisories:"
gh api graphql -f query='
{
securityVulnerabilities(first: 5, ecosystem: GO, package: "github.com/cosmos/cosmos-db") {
nodes {
advisory {
summary
severity
publishedAt
}
vulnerableVersionRange
firstPatchedVersion {
identifier
}
}
}
}'
# Check if the specific commit exists and its age
echo "Commit information:"
gh api repos/cosmos/cosmos-db/commits/ddc3f09bfc22 --jq '.commit.message'
Length of output: 767 Script: #!/bin/bash
# Check the DB interface changes in the specific commit
gh api repos/cosmos/cosmos-db/commits/ddc3f09bfc22/files --jq '.[].patch'
# Check if the test files in the current repo use any new features from this commit
rg -l "github.com/cosmos/cosmos-db" tests/
Length of output: 437 Script: #!/bin/bash
# Check how cosmos-db is used in the integration test
cat tests/integration/type_check.go
# Check the latest stable version's timestamp
gh api repos/cosmos/cosmos-db/git/refs/tags/v1.0.2 --jq '.object.url' | xargs gh api --jq '.committer.date'
Length of output: 526 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
Documentation and Community
|
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.
Copilot reviewed 2 out of 2 changed files in this pull request and generated no suggestions.
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
🧹 Outside diff range and nitpick comments (1)
core/testing/memdb.go (1)
316-325
: Consider making Print more flexible and testableWhile the implementation is thread-safe, consider these improvements:
- Allow customization of output destination (io.Writer) instead of direct stdout
- Return actual errors that might occur during writing
-func (db *MemDB) Print() error { +func (db *MemDB) Print(w io.Writer) error { db.mtx.RLock() defer db.mtx.RUnlock() db.kv.tree.Ascend(item{}, func(i item) bool { - fmt.Printf("[%X]:\t[%X]\n", i.key, i.value) + if _, err := fmt.Fprintf(w, "[%X]:\t[%X]\n", i.key, i.value); err != nil { + return false + } return true }) return nil }
📜 Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
📒 Files selected for processing (2)
core/testing/memdb.go
(2 hunks)tests/integration/type_check.go
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- tests/integration/type_check.go
🧰 Additional context used
📓 Path-based instructions (1)
core/testing/memdb.go (1)
Pattern **/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
🔇 Additional comments (3)
core/testing/memdb.go (3)
294-296
: LGTM: SetSync implementation is correct
The implementation appropriately delegates to Set method since memory operations are inherently synchronous. Thread safety is maintained through the existing mutex in Set.
304-306
: LGTM: DeleteSync implementation is correct
The implementation appropriately delegates to Delete method since memory operations are inherently synchronous. Thread safety is maintained through the existing mutex in Delete.
327-335
: LGTM: Stats implementation is clean and thread-safe
The implementation provides useful metadata about the database while maintaining thread safety through appropriate use of RLock.
* main: build(deps): Bump cosmossdk.io/math from 1.3.0 to 1.4.0 (#22580) fix(server/v2/api/telemetry): enable global metrics (#22571) refactor(server/v2/cometbft): add `codec.Codec` and clean-up APIs (#22566) feat(core/coretesting): make memDB satisfy db.Db interface (#22570) Merge commit from fork fix(server(/v2)): fix fallback genesis path (#22564) fix: only overwrite context chainID when necessary (#22568) docs(client): Update setFeeGranter and setFeePayer comments (#22526) fix(baseapp): populate header info in `NewUncachedContext` (#22557) build(deps): Bump buf.build/gen/go/cometbft/cometbft/protocolbuffers/go from 1.35.1-20240701160653-fedbb9acfd2f.1 to 1.35.2-20240701160653-fedbb9acfd2f.1 in /api (#22551) build(deps): Bump github.com/creachadair/atomicfile from 0.3.5 to 0.3.6 in /tools/confix (#22552) docs: Update reference of Approximation (#22550) fix(server/v2/comebft): wire missing services + fix simulation (#21964) ci: fix permissions for GITHUB_TOKEN on dependabot workflows (#22547) ci: fix permissions for GITHUB_TOKEN in spell check workflow (#22545) build(deps): Bump google.golang.org/protobuf from 1.35.1 to 1.35.2 (#22537) fix(cosmovisor): premature upgrade on restart (#22528) fix(store/v2/pebble): handle version 0 in keys (#22524) refactor(server/v2/telemetry): swap redirects (#22520) docs: Update content in CODE_OF_CONDUCT.md (#22518)
Description
Closes: #22498
Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...
!
in the type prefix if API or client breaking changeCHANGELOG.md
Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
Please see Pull Request Reviewer section in the contributing guide for more information on how to review a pull request.
I have...
Summary by CodeRabbit
New Features
Tests
MemDB
with the expected database interface.cosmos-db
.