Otel integration#125
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughAdds optional telemetry adapter support to Chargebee Ruby SDK v2.75.0. New telemetry classes build spans and request metadata, ChangesOpenTelemetry Telemetry Adapter
Estimated code review effort🎯 5 (Critical) | ⏱️ ~90 minutes Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@lib/chargebee/request.rb`:
- Around line 29-33: The safe-navigation usage in Request#request is
incompatible with the currently declared Ruby support, since
`telemetry_headers&.each` will not parse on Ruby 1.9/2.0. Update this logic to
avoid `&.` in `lib/chargebee/request.rb` by using an older-Ruby-compatible nil
check before iterating over `telemetry_headers`, or alternatively raise the
gem’s minimum Ruby version in the gemspec if that syntax is intended to stay.
- Around line 20-30: Normalize headers in Request.send before telemetry merging
so nil callers don’t crash; in Request.request, replace the direct headers.dup
usage with a nil-safe fallback (for example, an empty hash) before merging
telemetry_headers, and keep the NativeRequest.request call using the normalized
headers path so the HTTP request still proceeds normally.
In `@lib/chargebee/telemetry/request_telemetry_context.rb`:
- Around line 13-14: The gem’s advertised Ruby floor is incompatible with the
keyword-argument signatures used in the telemetry classes and executor. Either
raise the minimum Ruby version in chargebee.gemspec to match Ruby 2.0+ or
rewrite the initialize/method signatures in RequestTelemetryContext,
RequestTelemetryError, RequestTelemetryResult, and TelemetryExecutor to avoid
required keyword args. Make sure the chosen fix is applied consistently across
all affected telemetry entry points so the gem loads on every supported Ruby
version.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Enterprise
Run ID: d4669836-dee4-4b28-998e-7e2e0fb129a8
⛔ Files ignored due to path filters (1)
Gemfile.lockis excluded by!**/*.lock
📒 Files selected for processing (89)
CHANGELOG.mdREADME.mdVERSIONchargebee.gemspeclib/chargebee.rblib/chargebee/environment.rblib/chargebee/models/addon.rblib/chargebee/models/address.rblib/chargebee/models/alert.rblib/chargebee/models/alert_status.rblib/chargebee/models/attached_item.rblib/chargebee/models/business_entity.rblib/chargebee/models/card.rblib/chargebee/models/comment.rblib/chargebee/models/configuration.rblib/chargebee/models/coupon.rblib/chargebee/models/coupon_code.rblib/chargebee/models/coupon_set.rblib/chargebee/models/credit_note.rblib/chargebee/models/csv_tax_rule.rblib/chargebee/models/currency.rblib/chargebee/models/customer.rblib/chargebee/models/customer_entitlement.rblib/chargebee/models/differential_price.rblib/chargebee/models/entitlement.rblib/chargebee/models/entitlement_override.rblib/chargebee/models/estimate.rblib/chargebee/models/event.rblib/chargebee/models/export.rblib/chargebee/models/feature.rblib/chargebee/models/gift.rblib/chargebee/models/grant_block.rblib/chargebee/models/hosted_page.rblib/chargebee/models/in_app_subscription.rblib/chargebee/models/invoice.rblib/chargebee/models/item.rblib/chargebee/models/item_entitlement.rblib/chargebee/models/item_family.rblib/chargebee/models/item_price.rblib/chargebee/models/ledger_account_balance.rblib/chargebee/models/ledger_operation.rblib/chargebee/models/non_subscription.rblib/chargebee/models/offer_event.rblib/chargebee/models/offer_fulfillment.rblib/chargebee/models/omnichannel_one_time_order.rblib/chargebee/models/omnichannel_subscription.rblib/chargebee/models/omnichannel_subscription_item.rblib/chargebee/models/order.rblib/chargebee/models/payment_intent.rblib/chargebee/models/payment_schedule_scheme.rblib/chargebee/models/payment_source.rblib/chargebee/models/payment_voucher.rblib/chargebee/models/personalized_offer.rblib/chargebee/models/plan.rblib/chargebee/models/portal_session.rblib/chargebee/models/price_variant.rblib/chargebee/models/pricing_page_session.rblib/chargebee/models/promotional_credit.rblib/chargebee/models/promotional_grant.rblib/chargebee/models/purchase.rblib/chargebee/models/quote.rblib/chargebee/models/ramp.rblib/chargebee/models/recorded_purchase.rblib/chargebee/models/resource_migration.rblib/chargebee/models/rule.rblib/chargebee/models/site_migration_detail.rblib/chargebee/models/subscription.rblib/chargebee/models/subscription_entitlement.rblib/chargebee/models/time_machine.rblib/chargebee/models/transaction.rblib/chargebee/models/unbilled_charge.rblib/chargebee/models/usage.rblib/chargebee/models/usage_charge.rblib/chargebee/models/usage_event.rblib/chargebee/models/usage_file.rblib/chargebee/models/usage_summary.rblib/chargebee/models/virtual_bank_account.rblib/chargebee/models/webhook_endpoint.rblib/chargebee/request.rblib/chargebee/telemetry/request_telemetry_context.rblib/chargebee/telemetry/request_telemetry_error.rblib/chargebee/telemetry/request_telemetry_result.rblib/chargebee/telemetry/telemetry_adapter.rblib/chargebee/telemetry/telemetry_attribute_keys.rblib/chargebee/telemetry/telemetry_support.rblib/chargebee/telemetry_executor.rbspec/chargebee/request_telemetry_spec.rbspec/chargebee/telemetry_executor_spec.rbspec/chargebee/telemetry_support_spec.rb
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
• Add optional OpenTelemetry telemetry via telemetry_adapter on ChargeBee.configure / Environment
• Emit one chargebee.{resource}.{operation} CLIENT span per API call (retries reuse the same span)
• Add ChargeBee::Telemetry::* types, helpers, and span attribute keys (OTel HTTP semconv + chargebee.*)
• Pass telemetry_resource / telemetry_operation from model Request.send call sites