-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix deprecation warning in ActiveRecord 7.1 when clearing active connections #498
base: master
Are you sure you want to change the base?
Conversation
Failing Github actions don't seem to be related to my change. |
Hello @haffla ! Thanks for putting this up. We'll have to see what changed out from under us to cause those test failures. |
Hi @lancetarn. Were you able to dig into this? |
The issue seems to be
Rails seems to have had the same issue. |
@lancetarn all checks passed now |
@@ -51,7 +51,7 @@ def data | |||
ensure | |||
# Sometimes :database_engine and :database_adapter can cause a reference to an AR connection. | |||
# Make sure we release all AR connections held by this thread. | |||
ActiveRecord::Base.connection_handler.clear_active_connections! if Utils::KlassHelper.defined?("ActiveRecord::Base") | |||
ActiveRecord::Base.connection_handler.clear_active_connections!(:all) if Utils::KlassHelper.defined?("ActiveRecord::Base") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello - I wanted to open the same PR (when running tests this deprecation warning gets quite verbose). In any case I think this is a safer way to implement this (backwards compatibility):
if ActiveRecord::Base.connection_handler.respond_to?(:clear_active_connections!)
ActiveRecord::Base.connection_handler.clear_active_connections!(:all)
elsif ActiveRecord::Base.respond_to?(:clear_active_connections!)
# ~> Rails 3.2 -> https://apidock.com/rails/ActiveRecord/Base/clear_active_connections%21/class
ActiveRecord::Base.clear_active_connections!
end
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@marianposaceanu the link you posted: https://apidock.com/rails/ActiveRecord/Base/clear_active_connections%21/class actually shows that ActiveRecord::Base#clear_active_connections!
just calls connection_handler.clear_active_connections!
. So isn't it really the same?
Also there is a test for Rails 3 here and it's green.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah you mean that clear_active_connections!
doesn't take any arguments in Rails 3? That could be actually. But I wonder why no test is failing. I am gonna look into it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh lol, this code isn't even tested?!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK so I think before touching this part, we would have to write some unit tests.
Hi. Passing no argument to
ActiveRecord::Base.connection_handler.clear_active_connections!
was deprecated here and produces following log.Rails documentation of method: https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionHandler.html#method-i-clear_active_connections-21