Skip to content

Allow concurrent-ruby 1.3.x - #473

Open
log0u7 wants to merge 1 commit into
Dynflow:masterfrom
log0u7:relax-concurrent-ruby-pin
Open

Allow concurrent-ruby 1.3.x#473
log0u7 wants to merge 1 commit into
Dynflow:masterfrom
log0u7:relax-concurrent-ruby-pin

Conversation

@log0u7

@log0u7log0u7 commented Sep 6, 2026

Copy link
Copy Markdown

Problem

The ~> 1.1.3 pessimistic pin on concurrent-ruby (and the ~> 0.6.0 pin on concurrent-ruby-edge, which itself pins concurrent-ruby ~> 1.1.6) blocks every dependent from resolving the security-fixed concurrent-ruby releases. 1.3.7+ fixes CVE-2026-54906 and CVE-2026-54904; Foreman and the smart-proxy plugins (which pull dynflow) therefore ship a vulnerable concurrent-ruby with no resolver path to the fixed release.

Fixes#474

Changes

  • dynflow.gemspec: concurrent-ruby '~> 1.1.3' -> '>= 1.1.3', '< 2.0'
  • dynflow.gemspec: concurrent-ruby-edge '~> 0.6.0' -> '~> 0.7.0' (0.7.x supports concurrent-ruby ~> 1.3; latest 0.7.2 released 2025-01)
  • Gemfile: concurrent-ruby-ext '~> 1.1.3' -> '~> 1.3.0' (ext releases follow the main gem, 1.3.8 available)
  • lib/dynflow.rb: require 'logger' - concurrent-ruby 1.1 loaded logger as a side effect, 1.3 no longer does, so the global logger wiring crashed with NameError on 1.3.x

Test evidence

ruby 3.3, concurrent-ruby 1.3.8 + edge 0.7.2 + ext 1.3.8:

  • bundle resolves cleanly with the relaxed constraints
  • 397 tests of the suite pass, including the executor, dispatcher and polling tests
  • the full suite later hangs in the multi-executor dispatcher tests in our container environment; the same hang reproduces on master with concurrent-ruby 1.1.10 (progressing through fewer tests), so it is pre-existing and unrelated to this change

The ~> 1.1.3 pessimistic pin blocks every dependent (Foreman, smart-proxy
plugins) from resolving the security-fixed concurrent-ruby releases:
1.3.7+ fixes CVE-2026-54906 and CVE-2026-54904.
Relax the three related constraints:
- dynflow.gemspec: concurrent-ruby '>= 1.1.3', '< 2.0'
- dynflow.gemspec: concurrent-ruby-edge '~> 0.7.0' (0.7.x supports
concurrent-ruby ~> 1.3, 0.6.x pins ~> 1.1.6)
- Gemfile: concurrent-ruby-ext '~> 1.3.0' (ext releases follow the main
gem: 1.3.8 is available)
Code change: lib/dynflow.rb requires 'logger' explicitly. concurrent-ruby
1.1 loaded it as a side effect; 1.3 no longer does, so the global logger
wiring in lib/dynflow.rb crashes with NameError on 1.3.x.
Test evidence (ruby 3.3, concurrent-ruby 1.3.8 + edge 0.7.2 + ext 1.3.8):
397 tests of the suite pass. The full suite later hangs in the
multi-executor dispatcher tests in our environment; the same hang
reproduces on master with concurrent-ruby 1.1.10 (progressing through
fewer tests), so it is pre-existing and unrelated to this change.
Signed-off-by: log0u7 <70974447+log0u7@users.noreply.github.com>
Sign up for freeto 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.

Allow concurrent-ruby 1.3.x (CVE-2026-54906/54904 fixes blocked by ~> 1.1 pins)

1 participant

@log0u7