Module: Que::ActiveRecord::Connection::JobMiddleware
- Defined in:
- lib/que/active_record/connection.rb
Class Method Summary collapse
Class Method Details
.call(job) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/que/active_record/connection.rb', line 32 def call(job) yield # ActiveRecord will check out connections to the current thread when # queries are executed and not return them to the pool until # explicitly requested to. I'm not wild about this API design, and # it doesn't pose a problem for the typical case of workers using a # single PG connection (since we ensure that connection is checked # in and checked out responsibly), but since ActiveRecord supports # connections to multiple databases, it's easy for people using that # feature to unknowingly leak connections to other databases. So, # take the additional step of telling ActiveRecord to check in all # of the current thread's connections after each job is run. return if job.class.resolve_que_setting(:run_synchronously) if ::ActiveRecord.version >= Gem::Version.new('7.1') ::ActiveRecord::Base.connection_handler.clear_active_connections!(:all) else ::ActiveRecord::Base.clear_active_connections! end end |