Sha256: 946467478cb039a8b9f2a16e7b237fe4fa2d73fcc6a30fdf97c3b3a7c4a21527
Contents?: true
Size: 1.79 KB
Versions: 5
Compression:
Stored size: 1.79 KB
Contents
# This file contains some monkey patches module Simple::SQL::MonkeyPatches def self.warn(msg) @@warned ||= {} return if @@warned[msg] @@warned[msg] = true STDERR.puts "== monkeypatch warning: #{msg}" end end case ActiveRecord.gem_version.to_s when /^4/ :nop when /^5.2/ unless defined?(ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper) raise "Make sure to properly require active-record first" end # Rails5 introduced a Reaper which starts a Thread which checks for unused connections. However, # these threads are never cleaned up. This monkey patch disables the creation of those threads # in the first place, consequently preventing leakage of threads. # # see see https://github.com/rails/rails/issues/33600 and related commits and issues. class ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper def run return unless frequency && frequency > 0 Simple::SQL::MonkeyPatches.warn "simple-sql disables reapers for all connection pools, see https://github.com/rails/rails/issues/33600" end end when /^6/ unless defined?(ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper) raise "Make sure to properly require active-record first" end # Rails6 fixes the issue w/reapers leaking threads; by properly cleaning up these threads # (or so one hopes after looking at connection_pool.rb). However, in the interest of simple-sql # being more or less ActiveRecord agnostic we disable reaping here as well. (Also, that code # looks pretty complex to me). class ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper def run return unless frequency && frequency > 0 Simple::SQL::MonkeyPatches.warn "simple-sql disables reapers for all connection pools, see https://github.com/rails/rails/issues/33600" end end end
Version data entries
5 entries across 5 versions & 1 rubygems