Repository navigation
Update maxminddb-golang to 2.7.0 for the nested-record Verify fix - #167
Conversation
maxminddb-golang 2.7.0 fixes Reader.Verify() for search-tree records that point to a value nested in another data record. It requires Go 1.26 or later, so raise the go directive, the CI matrix, the release Go version, the golangci-lint target, and the README requirement. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (6)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe repository now specifies Go 1.26 or later, and its workflows use Go 1.26 and 1.27. The module dependencies are upgraded. The changelog adds v1.1.0 notes and updates its release links. ChangesGo version and v1.1.0 release
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~8 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The Go 1.26+ build requirement is consistent across the documented and configured paths, and the verifier update supports the described database-validation behavior. No actionable merge-blocking regression is evident. Architecture SummaryArchitecture risk: 🔵 Low · up to The change affects 3 systems. Changed systems: Architecture concerns Review detailsSystems and components
Before / after behavior
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. A rabbit checks the Go version line, Comment |
dev-bin/release.sh is based on the mmdbinspect script. It reads the version, date, and notes from the first dated CHANGELOG.md section. It parses Keep a Changelog headings and drops the link references from the notes. Then it pushes the branch and an annotated tag that has the notes in its message. The script does not create the GitHub release. Immutable releases are on for this repo, so no one can add assets after a release is published. GoReleaser creates the release instead (STF-1869). README.dev.md gives the release steps. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Release workflow still runs on a tag push, but now: - It waits for approval in the release environment. - It fetches the tags again, because actions/checkout replaces the annotated tag with a lightweight tag on a tag push. - It stops if the tag is not annotated or has no notes. - It gives the tag notes to GoReleaser. Before, someone added the release notes by hand, because the GoReleaser changelog is off. - It uses the stable Go version, so the release Go version does not go stale. - It scopes contents: write to the job. - It no longer checks out submodules. This repo has none. In .goreleaser.yml, name_template keeps the "1.0.0"-style release title. target_commitish is not needed, because the tag gives the commit. mmdbconvert made the same change in 90ba45d. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The goreleaser-check job runs a snapshot release on PRs, pushes to main, and manual runs. A broken .goreleaser.yml now fails CI before a release, not during one. mmdbconvert has the same job. Co-Authored-By: Claude Opus 5.5 <[email protected]>
golangci-lint 2.14.0 deprecates gomodguard and the gofumpt extra-rules setting. Use gomodguard_v2 and extra.group-params, as mmdbconvert does. Disable the new exhaustruct_v5 linter, as the config already disables exhaustruct. The version and the config change go in one commit. precious fails on the deprecation warnings from 2.14.0 with the old config, and 2.11.3 rejects the new config. Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Remove the gosec G401 and G501 exclusions. They were for md5 in geoipupdate, and mmdbverify does not use md5. - Let revive's enforce-switch-style allow a switch with no default. Co-Authored-By: Claude Opus 5.5 <[email protected]>
STF-1864
mmdbverify rejects some valid databases that mmdbwriter writes. In these databases, a search-tree record points to a value nested in another data record (oschwald/maxminddb-golang#250). maxminddb-golang 2.7.0 fixes
Reader.Verify()for these records (oschwald/maxminddb-golang#255).Changes
github.com/oschwald/maxminddb-golang/v2to v2.7.0.go.mod:go 1.26.0.golangci.ymland README: 1.26The changelog uses the upstream release notes, not the ticket, in two places:
Testing
I made test databases from the reproducer in oschwald/maxminddb-golang#250:
main(v2.6.0)go build,go vet, andgolangci-lintreport no issues.Release tooling
The release flow now matches the one that STF-1869 sets up for mmdbinspect. Immutable releases are on for this repo, so no one can add assets after a release is published. GoReleaser creates the release as a draft, uploads the assets, and then publishes it. The mmdbconvert v0.2.0 release failed with the flow that publishes first (maxmind/mmdbconvert@90ba45d).
dev-bin/release.shandREADME.dev.md: new. The script reads the first datedCHANGELOG.mdsection, then pushes the branch and an annotated tag with the notes.release.yml:releaseenvironment.stable.release.yml: a newgoreleaser-checkjob runs a snapshot release on PRs and pushes tomain, as mmdbconvert does..goreleaser.yml:name_templatereplacestarget_commitish, as in mmdbconvert.Lint config
gomodguard_v2and gofumptextra.group-params, and disableexhaustruct_v5. These go in one commit, because each change fails lint without the other..golangci.ymlnow differs from mmdbconvert's only in the module path and thegotarget.Release tooling tests
shellcheck,shfmt,zizmor,prettier, andgoreleaser checkpass.goreleaser release --snapshot --clean --skip=publishbuilt all 10 archives and packages.###headings included (--cleanup=verbatim).Before release
The
releaseenvironment does not exist in this repo yet. The environments are managed in Terraform (ENG-4134). If a workflow names an environment that does not exist, GitHub creates it with no protection. So the environment must exist before the first tag push.After that, add today's date to the 1.1.0 heading and run
dev-bin/release.sh.🤖 Generated with Claude Code