-
-
Notifications
You must be signed in to change notification settings - Fork 522
Closed
Description
Issue Description
ActiveRecordSubscriber is completely broken for us anyway (#2785 ), but sometimes it breaks even faster.
If your query uses an unnamed bind, like Account.where("email = ?", "foo@example.com"), you'll get these errors instead:
Reproduction Steps
- Install sentry-ruby 6.1 on a Rails 8.0.3 app on MRI (with postgres, or probably almost anything)
- Configure
Sentry.configuration.send_default_pii = true - Attempt to run a query with an unnamed bound parameter, e.g.,
Account.where("email = ?", "foo@example.com").first
Expected Behavior
Sentry logs the query (though very understandable if it couldn't safely provide the bound value)
Actual Behavior
Sentry 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", "")
endMetadata
Metadata
Assignees
Projects
Status
No status