Module: ActiveRecord::ConnectionAdapters::QueryCache::ConnectionPoolConfiguration

Included in:
ConnectionPool
Defined in:
lib/active_record/connection_adapters/abstract/query_cache.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#checkout_and_verify(connection) ⇒ Object



132
133
134
135
136
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 132

def checkout_and_verify(connection)
  super
  connection.query_cache ||= query_cache
  connection
end

#clear_query_cacheObject



177
178
179
180
181
182
183
184
185
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 177

def clear_query_cache
  if @pinned_connection
    # With transactional fixtures, and especially systems test
    # another thread may use the same connection, but with a different
    # query cache. So we must clear them all.
    @query_cache_version.increment
  end
  query_cache.clear
end

#dirties_query_cacheObject



173
174
175
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 173

def dirties_query_cache
  query_cache.dirties
end

#disable_query_cache(dirties: true) ⇒ Object

Disable the query cache within the block.



139
140
141
142
143
144
145
146
147
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 139

def disable_query_cache(dirties: true)
  cache = query_cache
  old_enabled, cache.enabled, old_dirties, cache.dirties = cache.enabled, false, cache.dirties, dirties
  begin
    yield
  ensure
    cache.enabled, cache.dirties = old_enabled, old_dirties
  end
end

#disable_query_cache!Object



164
165
166
167
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 164

def disable_query_cache!
  query_cache.enabled = false
  query_cache.dirties = true
end

#enable_query_cacheObject



149
150
151
152
153
154
155
156
157
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 149

def enable_query_cache
  cache = query_cache
  old_enabled, cache.enabled, old_dirties, cache.dirties = cache.enabled, true, cache.dirties, true
  begin
    yield
  ensure
    cache.enabled, cache.dirties = old_enabled, old_dirties
  end
end

#enable_query_cache!Object



159
160
161
162
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 159

def enable_query_cache!
  query_cache.enabled = true
  query_cache.dirties = true
end

#initializeObject



117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 117

def initialize(...)
  super
  @query_cache_version = Concurrent::AtomicFixnum.new
  @thread_query_caches = QueryCacheRegistry.new
  @query_cache_max_size = \
    case query_cache = db_config&.query_cache
    when 0, false
      nil
    when Integer
      query_cache
    when nil
      DEFAULT_SIZE
    end
end

#query_cacheObject



187
188
189
190
191
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 187

def query_cache
  @thread_query_caches.compute_if_absent(ActiveSupport::IsolatedExecutionState.context) do
    Store.new(@query_cache_version, @query_cache_max_size)
  end
end

#query_cache_enabledObject



169
170
171
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 169

def query_cache_enabled
  query_cache.enabled
end