Revert "FIX: Always clear caches after committing the current transaction" (#22493)

This reverts commit 8310c7842c.

This was breaking precompilation.
This commit is contained in:
Daniel Waterworth 2023-07-07 18:05:38 -05:00 committed by GitHub
parent 9dd01ca2ef
commit cb794275a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 24 deletions

View File

@ -117,7 +117,7 @@ class Theme < ActiveRecord::Base
update_javascript_cache! update_javascript_cache!
remove_from_cache! remove_from_cache!
ColorScheme.hex_cache.clear DB.after_commit { ColorScheme.hex_cache.clear }
notify_theme_change(with_scheme: notify_with_scheme) notify_theme_change(with_scheme: notify_with_scheme)
if theme_setting_requests_refresh if theme_setting_requests_refresh
@ -358,7 +358,7 @@ class Theme < ActiveRecord::Base
end end
def self.clear_cache! def self.clear_cache!
@cache.clear DB.after_commit { @cache.clear }
end end
def self.targets def self.targets
@ -529,12 +529,12 @@ class Theme < ActiveRecord::Base
def child_theme_ids=(theme_ids) def child_theme_ids=(theme_ids)
super(theme_ids) super(theme_ids)
Theme.clear_cache! DB.after_commit { Theme.clear_cache! }
end end
def parent_theme_ids=(theme_ids) def parent_theme_ids=(theme_ids)
super(theme_ids) super(theme_ids)
Theme.clear_cache! DB.after_commit { Theme.clear_cache! }
end end
def add_relative_theme!(kind, theme) def add_relative_theme!(kind, theme)

View File

@ -394,22 +394,22 @@ class ThemeField < ActiveRecord::Base
translation_field? ? process_translation : process_html(self.value) translation_field? ? process_translation : process_html(self.value)
self.error = nil unless self.error.present? self.error = nil unless self.error.present?
self.compiler_version = Theme.compiler_version self.compiler_version = Theme.compiler_version
CSP::Extension.clear_theme_extensions_cache! DB.after_commit { CSP::Extension.clear_theme_extensions_cache! }
elsif extra_js_field? || js_tests_field? elsif extra_js_field? || js_tests_field?
self.error = nil self.error = nil
self.value_baked = "baked" self.value_baked = "baked"
self.compiler_version = Theme.compiler_version self.compiler_version = Theme.compiler_version
elsif basic_scss_field? elsif basic_scss_field?
ensure_scss_compiles! ensure_scss_compiles!
Stylesheet::Manager.clear_theme_cache! DB.after_commit { Stylesheet::Manager.clear_theme_cache! }
elsif settings_field? elsif settings_field?
validate_yaml! validate_yaml!
CSP::Extension.clear_theme_extensions_cache! DB.after_commit { CSP::Extension.clear_theme_extensions_cache! }
SvgSprite.expire_cache DB.after_commit { SvgSprite.expire_cache }
self.value_baked = "baked" self.value_baked = "baked"
self.compiler_version = Theme.compiler_version self.compiler_version = Theme.compiler_version
elsif svg_sprite_field? elsif svg_sprite_field?
SvgSprite.expire_cache DB.after_commit { SvgSprite.expire_cache }
self.error = validate_svg_sprite_xml self.error = validate_svg_sprite_xml
self.value_baked = "baked" self.value_baked = "baked"
self.compiler_version = Theme.compiler_version self.compiler_version = Theme.compiler_version
@ -682,7 +682,7 @@ class ThemeField < ActiveRecord::Base
if upload && svg_sprite_field? if upload && svg_sprite_field?
upsert_svg_sprite! upsert_svg_sprite!
SvgSprite.expire_cache DB.after_commit { SvgSprite.expire_cache }
end end
end end
@ -690,7 +690,7 @@ class ThemeField < ActiveRecord::Base
if svg_sprite_field? if svg_sprite_field?
ThemeSvgSprite.where(theme_id: theme_id).delete_all ThemeSvgSprite.where(theme_id: theme_id).delete_all
SvgSprite.expire_cache DB.after_commit { SvgSprite.expire_cache }
end end
end end

View File

@ -5,7 +5,7 @@ class ThemeSvgSprite < ActiveRecord::Base
def self.refetch! def self.refetch!
ThemeField.svg_sprite_fields.find_each(&:upsert_svg_sprite!) ThemeField.svg_sprite_fields.find_each(&:upsert_svg_sprite!)
SvgSprite.expire_cache DB.after_commit { SvgSprite.expire_cache }
end end
end end

View File

@ -773,14 +773,14 @@ module Discourse
def self.received_postgres_readonly! def self.received_postgres_readonly!
time = Time.zone.now time = Time.zone.now
redis.set(LAST_POSTGRES_READONLY_KEY, time.to_i.to_s) redis.set(LAST_POSTGRES_READONLY_KEY, time.to_i.to_s)
postgres_last_read_only.clear(after_commit: false) postgres_last_read_only.clear
time time
end end
def self.clear_postgres_readonly! def self.clear_postgres_readonly!
redis.del(LAST_POSTGRES_READONLY_KEY) redis.del(LAST_POSTGRES_READONLY_KEY)
postgres_last_read_only.clear(after_commit: false) postgres_last_read_only.clear
end end
def self.received_redis_readonly! def self.received_redis_readonly!

View File

@ -19,12 +19,4 @@ class DistributedCache < MessageBus::DistributedCache
self.defer_set(k, value) self.defer_set(k, value)
value value
end end
def clear(after_commit: true)
if after_commit
DB.after_commit { super() }
else
super()
end
end
end end

View File

@ -151,8 +151,8 @@ end
TestProf::BeforeAll.configure do |config| TestProf::BeforeAll.configure do |config|
config.after(:begin) do config.after(:begin) do
DB.test_transaction = ActiveRecord::Base.connection.current_transaction
TestSetup.test_setup TestSetup.test_setup
DB.test_transaction = ActiveRecord::Base.connection.current_transaction
end end
end end
@ -350,6 +350,8 @@ RSpec.configure do |config|
FileUtils.remove_dir(concurrency_safe_tmp_dir, true) if SpecSecureRandom.value FileUtils.remove_dir(concurrency_safe_tmp_dir, true) if SpecSecureRandom.value
end end
config.before :each, &TestSetup.method(:test_setup)
config.around :each do |example| config.around :each do |example|
before_event_count = DiscourseEvent.events.values.sum(&:count) before_event_count = DiscourseEvent.events.values.sum(&:count)
example.run example.run
@ -384,7 +386,6 @@ RSpec.configure do |config|
config.before :each do config.before :each do
# This allows DB.transaction_open? to work in tests. See lib/mini_sql_multisite_connection.rb # This allows DB.transaction_open? to work in tests. See lib/mini_sql_multisite_connection.rb
DB.test_transaction = ActiveRecord::Base.connection.current_transaction DB.test_transaction = ActiveRecord::Base.connection.current_transaction
TestSetup.test_setup
end end
# Match the request hostname to the value in `database.yml` # Match the request hostname to the value in `database.yml`