Fix not actually connecting to the configured replica (#25977)

main-unfiltered
Eugen Rochko 2023-07-17 08:26:52 +02:00 committed by GitHub
parent b923a4c755
commit 26e522ac55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 14 deletions

View File

@ -2,10 +2,10 @@
module DatabaseHelper
def with_read_replica(&block)
ApplicationRecord.connected_to(role: :read, prevent_writes: true, &block)
ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block)
end
def with_primary(&block)
ApplicationRecord.connected_to(role: :primary, &block)
ApplicationRecord.connected_to(role: :writing, &block)
end
end

View File

@ -5,6 +5,8 @@ class ApplicationRecord < ActiveRecord::Base
include Remotable
connects_to database: { writing: :primary, reading: :read }
class << self
def update_index(_type_name, *_args, &_block)
super if Chewy.enabled?

View File

@ -8,23 +8,41 @@ default: &default
application_name: ''
development:
primary:
<<: *default
database: <%= ENV['DB_NAME'] || 'mastodon_development' %>
username: <%= ENV['DB_USER'] %>
password: <%= (ENV['DB_PASS'] || '').to_json %>
host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %>
read:
<<: *default
database: <%= ENV['DB_NAME'] || 'mastodon_development' %>
username: <%= ENV['DB_USER'] %>
password: <%= (ENV['DB_PASS'] || '').to_json %>
host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %>
replica: true
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
primary:
<<: *default
database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %>
username: <%= ENV['DB_USER'] %>
password: <%= (ENV['DB_PASS'] || '').to_json %>
host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %>
read:
<<: *default
database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %>
username: <%= ENV['DB_USER'] %>
password: <%= (ENV['DB_PASS'] || '').to_json %>
host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %>
replica: true
production:
primary: