Skip to content

ActiveRecordSubscriber fails to log most queries on Rails 8.0.3, everywhere except JRUBY #2785

Closed

Description

@midnightmonster

Issue Description

Since upgrading to sentry-ruby 6.1, instead of query logs we mostly get these:

Image

At a glance, this is because this line accesses type_casted_binds, but only in JRUBY does type_casted_binds return an Array.

Image

Everywhere else (unless one is using an unusual database adapter that overloads cache_notification_info), type_casted_binds returns a lambda, and since Proc#[] is an alias for Proc#call, the attempt to access a value by index on :57 actually calls the proc with the key as the unexpected argument.

Image

Reproduction Steps

  1. Install sentry-rails 6.1 on a Rails 8.0.3 app on MRI (with postgres, or probably almost anything)
  2. Configure Sentry.configuration.send_default_pii = true
  3. Attempt to run any normal query with at least one bound parameter, e.g., Account.where(email: "foo@example.com").first

Expected Behavior

Logs query

Actual Behavior

Logs its own failure to log the query

Ruby Version

3.3.2

SDK Version

sentry-rails 6.1.0 (not sure what this is asking)

Integration and Its Version

Rails 8.0.3

Sentry Config

# config/initializers/sentry.rb
Sentry.init do |config|
  config.dsn = ENV["SENTRY_EU_DSN"]
  config.breadcrumbs_logger = [:active_support_logger, :http_logger]

  if ENV["SENTRY_LOGGING_ENABLED"]
    config.enable_logs = true
    config.enabled_patches = [:logger]
    config.rails.structured_logging.enabled = true
    config.send_default_pii = true

    config.rails.structured_logging.subscribers = {
      action_controller: Sentry::Rails::LogSubscribers::ActionControllerSubscriber,
      active_record: Class.new(Sentry::Rails::LogSubscribers::ActiveRecordSubscriber) do
        def sql(event)
          # SolidQueue database queries are too noisy
          return if event.payload[:name]&.starts_with?("SolidQueue::")
          super
        end
      end
    }
  end

  # TODO: If/when `sentry-rails` adds solid_queue or ActiveJob support for not
  # reporting exceptions from retried jobs (as it does for Sidekiq and DelayedJob),
  # use that and stop excluding `CompletedDocument::MissingFolder`
  config.excluded_exceptions += ["CompletedDocument::MissingFolder"]

  config.traces_sample_rate = 1.0
  config.traces_sampler = lambda do |context|
    true
  end

  config.profiles_sample_rate = 1.0

  config.release = ENV.fetch("HEROKU_RELEASE_VERSION", "")
end

Activity

  1. linear commented on Nov 21, 2025

    @linear
  2. moved this to Waiting for: Product Owner in GitHub Issues with 👀 3on Nov 21, 2025
  3. midnightmonster commented on Nov 21, 2025

    @midnightmonster
    Author

    Sidebar: I noticed an additional issues in the same area of the code. This particular issue does not appear to be causing us any problems, because I think binds is rarely if ever nil, but this expression:

    Image

    ...doesn't do quite what you probably mean. If binds == [] all is well and everything inside if is skipped, but if binds == nil, the if will evaluate to true.

  4. self-assigned this
    on Nov 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions