Support mixed-version Solaris worker discovery during upgrades
Summary
Resque::Worker#solaris_worker_pids in lib/resque/worker.rb matches Solaris pargs output against the exact current Resque::VERSION value.
During a mixed-version upgrade, a newer Resque process can fail to discover an older still-running worker. For example, a 3.0.2 process can omit a 3.0.1 worker because the process title contains resque-3.0.1 instead of resque-3.0.2.
Required change
Update the Solaris worker-discovery logic so that compatible Resque workers remain discoverable during mixed-version upgrades. Do not require an exact match to the current Resque::VERSION for this discovery path.
Rationale
Resque::Worker#worker_pids uses solaris_worker_pids on Solaris. Lifecycle operations, including dead-worker pruning, depend on worker discovery. Exact version matching can exclude an active worker during a rolling or mixed-version deployment.
Affected area
lib/resque/worker.rbResque::Worker#solaris_worker_pids- Callers that use
Resque::Worker#worker_pidsfor worker lifecycle handling
Acceptance criteria
- A newer Resque process discovers compatible older Resque worker processes on Solaris.
- Discovery does not depend on an exact
Resque::VERSIONmatch. - Tests cover mixed-version Solaris process-title input.
- The change does not affect non-Solaris worker discovery behavior.
Context
This work is intentionally separate from the 3.0.2 release metadata pull request.
- Pull request: https://github.com/resque/resque/pull/1947
- Review discussion: https://github.com/resque/resque/pull/1947#discussion_r3889933158
- Requested by: @PatrickTulskie
Source: resque/resque