You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'd like to report a bug / some unexpected behaviour we've observed in the 1.3.5 version of the gem. If this is expected / documented somewhere that I've missed, apologies and please point me at it.
Test case
Below we're using ActiveRecord to orchestrate the connection to Postgres using the ruby-pg gem under the hood.
If we execute the following:
error =
begin
ActiveRecord::Base.connection.
execute("select pg_terminate_backend(pg_backend_pid());")
rescue ActiveRecord::StatementInvalid => e
return e
end
# connection_bad_error will be an instance of `PG::ConnectionBad`
connection_bad_error = error.cause
puts connection_bad_error.connection
What I would expect to happen
I'd expect that the connection attribute on the exception to be present as we should know which connection tried to delete it's own backend.
This is the behaviour the library had up until 1.2.3.
What actually happens
The connection attribute is missing so puts connection_bad_error.connection prints nil.
I'm not sure if other cases of PG::ConnectionBad would cause the connection attribute to be included.
Why is this important
If we detect a connection is had we may want to remove it from the AR connection pool / do some other cleanup action that we're unable to do as we don't know which connection is bad.
The text was updated successfully, but these errors were encountered:
ahjmorton
changed the title
Missing connection attribute on PG::ConnectionBad
Missing connection attribute on PG::ConnectionBad error
Jun 10, 2022
larskanis
added a commit
to larskanis/ruby-pg
that referenced
this issue
Jun 14, 2022
Hi there,
I'd like to report a bug / some unexpected behaviour we've observed in the 1.3.5 version of the gem. If this is expected / documented somewhere that I've missed, apologies and please point me at it.
Test case
Below we're using ActiveRecord to orchestrate the connection to Postgres using the
ruby-pg
gem under the hood.If we execute the following:
What I would expect to happen
I'd expect that the
connection
attribute on the exception to be present as we should know which connection tried to delete it's own backend.This is the behaviour the library had up until 1.2.3.
What actually happens
The connection attribute is missing so
puts connection_bad_error.connection
prints nil.I'm not sure if other cases of
PG::ConnectionBad
would cause theconnection
attribute to be included.Why is this important
If we detect a connection is had we may want to remove it from the AR connection pool / do some other cleanup action that we're unable to do as we don't know which connection is bad.
The text was updated successfully, but these errors were encountered: