Skip to content

Bump CI to JRuby 10, drop obsolete jar-dependencies workaround - #40

Merged
tungleduyxyz merged 2 commits into
masterfrom
jruby10-upgrade
Sep 15, 2026
Merged

tungleduyxyz merged 2 commits into
masterfrom
jruby10-upgrade

Conversation

@tungleduyxyz

Copy link
Copy Markdown
Contributor

Part of Phase 1 of the JRuby 10 upgrade (Rails stays ~> 7.2 for now). Bumps CI from jruby-9.4.15.0 to jruby-10.0.6.0 (LTS line), and drops the JRuby-9.4.10 jar-dependencies ~> 0.4.1 workaround (upstream jruby/jruby#7262 is closed). Validated locally: bundle install resolves cleanly under real JRuby 10.1.1.0/JDK21. Note: this is the Rails engine UI for KPM, distinct from killbill-cloud/kpm (the CLI tool).

Bump jruby-9.4.15.0 -> jruby-10.0.6.0 (LTS line) in the CI matrix, and remove the JRuby-9.4.10 jar-dependencies ~> 0.4.1 workaround gem (upstream jruby/jruby#7262 is closed). Part of Phase 1 of the JRuby 10 upgrade (Rails stays ~> 7.2 for now). Validated locally: bundle install resolves cleanly under real JRuby 10.1.1.0/JDK21.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… crash

CI on this branch (and on master, independent of this PR) was failing:
NavigationTest#test_can_restart_bundle - "Expected response to be a
<2XX: success>, but was a <500: Internal Server Error>".

Root-caused by reproducing locally against a real killbill/killbill:0.24.0
instance and running the test directly (RAILS_ENV=test rails test):

  ArgumentError (unknown keyword: quirks_mode):
  json (3.0.1) lib/json/common.rb:382:in 'generate'
  activesupport (7.2.3.2) lib/active_support/json/encoding.rb:110:in 'stringify'
  killbill-client (4.0.9) lib/killbill_client/models/resource.rb:259:in 'to_json'
  killbill-client (4.0.9) lib/killbill_client/models/nodes_info.rb:53:in 'trigger_node_command'
  app/controllers/kpm/nodes_info_controller.rb:166:in 'trigger_node_command'

json 3.0 dropped the quirks_mode keyword that ActiveSupport::JSON.encode
still passes to JSON.generate (not fixed until Rails 8.1.0). This Gemfile
had an unpinned `gem 'json'` in the :development group, which was
incidentally protected until now by rubocop's own `json ~> 2.3` dependency
- but rubocop 1.90.0 (released 2026-08-24) loosened that to `json >= 2.3`
(no upper bound). Once json 3.0.0/3.0.1 were actually published
(2026-09-07/08), any fresh `bundle install` (Gemfile.lock isn't committed
in this repo) started resolving json 3.x, breaking any code path that
calls #to_json - including killbill-client's own model classes, used
throughout this engine's controllers.

Pinned `gem 'json', '~> 2.21'` (same fix already applied to
killbill-admin-ui-standalone for the same root cause) and moved it out of
the :development group to file level, since Bundler.setup activates the
locked version on the load path regardless of which group declares it -
grouping alone would not have prevented the crash.

Verified fix: reproduced the exact CI Docker stack locally (killbill/
killbill:0.24.0 + killbill/postgresql:0.24 via docker compose), ran the
previously-failing test directly against it - now passes, along with the
full test suite (3 runs, 3 assertions, 0 failures, 0 errors).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The json version constraint is only applied in the Gemfile and should also be expressed as a runtime dependency in the gemspec if it’s required for downstream consumers.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Updates the repository’s JRuby upgrade track by moving CI to JRuby 10 and cleaning up dependency workarounds associated with older JRuby releases, while also adding a Gemfile constraint to avoid json 3.x incompatibilities with ActiveSupport JSON encoding.

Changes:

  • Bump GitHub Actions CI matrix JRuby version from 9.4.15.0 to 10.0.6.0.
  • Remove the JRuby-specific jar-dependencies ~> 0.4.1 workaround tied to an older JRuby issue.
  • Pin json to a 2.x line in the Gemfile to avoid json 3.x breaking behavior with ActiveSupport::JSON.encode.
File summaries
File Description
Gemfile Adds a json pin and removes the JRuby jar-dependencies workaround.
.github/workflows/ci.yml Updates CI matrix JRuby version entries to JRuby 10.0.6.0.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread Gemfile Resolved
Comment thread Gemfile Resolved
@tungleduyxyz
tungleduyxyz merged commit 6263fd5 into master Sep 15, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants