Skip to content

chore: v6 beta pre-release#205

Open
rustatian wants to merge 2 commits intomasterfrom
pre-release/v6-beta
Open

chore: v6 beta pre-release#205
rustatian wants to merge 2 commits intomasterfrom
pre-release/v6-beta

Conversation

@rustatian
Copy link
Member

Reason for This PR

  • Next release cycle.

Description of Changes

  • Cleanup, update deps to v6, goridge v4.
  • New tests, remove otel (mock).

License Acceptance

By submitting this pull request, I confirm that my contribution is made under
the terms of the MIT license.

PR Checklist

[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

  • All commits in this PR are signed (git commit -s).
  • The reason for this PR is clearly provided (issue no. or explanation).
  • The description of changes is clear and encompassing.
  • Any required documentation changes (code and docs) are included in this PR.
  • Any user-facing changes are mentioned in CHANGELOG.md.
  • All added/changed functionality is tested.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian self-assigned this Mar 12, 2026
@rustatian rustatian added the enhancement New feature or request label Mar 12, 2026
Copilot AI review requested due to automatic review settings March 12, 2026 22:10
@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

Warning

Rate limit exceeded

@rustatian has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 25 minutes and 24 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3f4be54d-0c4e-40c9-9c65-c1649fa09f7e

📥 Commits

Reviewing files that changed from the base of the PR and between 0c70ca2 and abca395.

⛔ Files ignored due to path filters (4)
  • go.sum is excluded by !**/*.sum
  • go.work.sum is excluded by !**/*.sum
  • tests/go.sum is excluded by !**/*.sum
  • tests/php_test_files/composer.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • .github/dependabot.yml
  • .github/workflows/linux.yml
  • .gitignore
  • .golangci.yml
  • boltjobs/driver.go
  • boltjobs/item.go
  • boltjobs/listener.go
  • boltkv/driver.go
  • go.mod
  • plugin.go
  • tests/boltdb_test.go
  • tests/go.mod
  • tests/helpers/helpers.go
  • tests/mock/tracer.go
  • tests/php_test_files/composer.json
  • tests/pkgs.txt
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch pre-release/v6-beta
📝 Coding Plan
  • Generate coding plan for human review comments

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the BoltDB RoadRunner plugin and its test harness to the v6 module/API ecosystem, including updated Jobs/KV plugin interfaces and refreshed CI/test instrumentation.

Changes:

  • Bump module path to github.com/roadrunner-server/boltdb/v6 and migrate to api-plugins/v6 (Jobs/KV) and newer Goridge/OTel deps.
  • Refactor OTEL-related tests to use an in-memory OpenTelemetry exporter instead of querying an external Zipkin endpoint.
  • Update CI workflow to generate/upload coverage artifacts under the new module path and simplify coverage flags.

Reviewed changes

Copilot reviewed 15 out of 20 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/pkgs.txt Removes the package list previously used for -coverpkg.
tests/php_test_files/composer.json Adjusts PHP test dependencies (HTTP client stack).
tests/mock/tracer.go Adds an in-memory tracer provider/exporter for tests.
tests/helpers/helpers.go Updates API imports + RPC dial behavior (DialContext) and modernizes loops.
tests/go.mod Updates test module dependencies to v6 APIs and newer OTel versions; updates replace to v6.
tests/go.sum Syncs sums with updated test dependencies.
tests/boltdb_test.go Switches OTEL test from Zipkin HTTP polling to in-memory span assertions; updates imports to v6.
plugin.go Migrates to api-plugins/v6, adds tracer collection via Endure, and updates constructor signatures to accept context.Context.
go.mod Changes module path to /v6, updates deps, and adds exclude entries for viper.
go.sum Syncs sums with updated root dependencies.
boltkv/driver.go Migrates KV storage interface to api-plugins/v6 and adds context-aware method signatures and span creation.
boltjobs/listener.go Cleans up listener code/comments and simplifies UTC handling.
boltjobs/item.go Switches JSON implementation to stdlib and tightens error handling in requeue path.
boltjobs/driver.go Migrates Jobs driver to api-plugins/v6, adds ctx params to constructors, and improves some internals/logging.
.golangci.yml Removes dupl and drops test-specific linter rule overrides.
.gitignore Adds **/composer.lock to ignores.
.github/workflows/linux.yml Updates CI matrix/coverage collection, artifact handling, and codecov preparation.
.github/dependabot.yml Removes explicit reviewers configuration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +97 to 101
func (d *Driver) Has(ctx context.Context, keys ...string) (map[string]bool, error) {
const op = errors.Op("boltdb_driver_has")
_, span := d.tracer.Tracer(tracerName).Start(context.Background(), "boltdb:has")
_, span := d.tracer.Tracer(tracerName).Start(ctx, "boltdb:has")
defer span.End()

Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

d.tracer can be nil (e.g., when the boltdb plugin is registered without any Tracer provider), but these methods unconditionally call d.tracer.Tracer(...), which will panic at runtime. Add a nil-safe fallback (e.g., initialize a default sdktrace.NewTracerProvider() in NewBoltDBDriver when tracer == nil, or guard before starting spans).

Copilot uses AI. Check for mistakes.
func (p *Plugin) Init(log Logger, cfg Configurer) error {
p.log = log.NamedLogger(PluginName)
p.log = log.NamedLogger(pluginName)
p.cfg = cfg
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The plugin no longer initializes a default tracer provider. If nothing in the container matches the Tracer interface, p.tracer remains nil and is passed into KV/JOBS constructors (KV currently panics when starting spans). Consider setting p.tracer to a default provider in Init (and/or returning a clear error if no tracer was collected) to avoid runtime crashes in configurations that don’t include an OTEL/tracer plugin.

Suggested change
p.cfg = cfg
p.cfg = cfg
// Initialize a default (noop) tracer provider so p.tracer is never nil.
// This can be overridden later via the Tracer dependency collected in Collects().
p.tracer = sdktrace.NewTracerProvider()

Copilot uses AI. Check for mistakes.
Comment on lines 86 to +96
- run: |
echo 'mode: atomic' > summary.txt
tail -q -n +2 *.out >> summary.txt
sed -i '2,${/roadrunner/!d}' summary.txt

tail -q -n +2 coverage/*.out >> summary.txt
awk '
NR == 1 { print; next }
/^github\.com\/roadrunner-server\/boltdb\/v6\// {
sub(/^github\.com\/roadrunner-server\/boltdb\/v6\//, "", $0)
print
}
' summary.txt > summary.filtered.txt
mv summary.filtered.txt summary.txt
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The awk filter keeps only coverage lines starting with github.com/roadrunner-server/boltdb/v6/, but both test commands run go test with explicit file lists (e.g. go test ... plugin.go plugin_test.go / ... boltdb_test.go), which typically produces coverprofile entries prefixed with command-line-arguments/.... This filtering will likely drop all coverage data and upload an effectively empty report. Adjust the test invocation to use package paths (e.g. go test ./... or go test . / go test ./tests) or broaden the filter to include the actual coverprofile path prefix.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants