newrelic / newrelic-ruby-agent

New Relic RPM Ruby Agent
https://docs.newrelic.com/docs/apm/agents/ruby-agent/getting-started/introduction-new-relic-ruby/
Apache License 2.0
1.2k stars 598 forks source link

Ruby v3.4 compatibility: Address the Resque instrumentation's dependency on resolv-replace #2550

Closed fallwith closed 2 days ago

fallwith commented 4 months ago

The agent's Resque instrumentation makes use of the resolv-replace gem that is automatically available for all currently supported Rubies (v2.4 - v3.3). Starting with Ruby v3.4, resolve-replace will not be present by default and will need to be sourced from RubyGems.org as a dependency. We need to understand what this Ruby v3.4 driven change will mean for our Resque instrumentation.

We have a hypothesis that the agent's existing use of resolv-replace is not actually necessary for modern Resque versions. If this is true AND we have already dropped support for the older Resque versions that necessitated it, we can simply refactor out the agent's resolv-replace logic. If resolv-replace is still required, then things are a bit trickier. We might not want to declare resolv-replace as a dependency of the agent when it is unnecessary for all customers not using Resque. We might be able to fork the sliver of resolv-replace logic that we use. We might be able to refactor around the need for resolv-replace. We might be able to put the onus of bringing resolv-replace on the customer with conditional logic that only enables Resque instrumentation if that gem is present.

NOTE: Ruby v3.4 is expected to release on 2024-12-25.

workato-integration[bot] commented 4 months ago

https://new-relic.atlassian.net/browse/NR-258182

fallwith commented 2 days ago

This duplicates #2396