Prevent pinning writes in non-primary DCs
This commit is contained in:
@@ -0,0 +1 @@
|
||||
require_relative "deployment/database_resolver.rb"
|
||||
@@ -0,0 +1,18 @@
|
||||
module Deployment
|
||||
class DatabaseResolver < ActiveRecord::Middleware::DatabaseSelector::Resolver
|
||||
def self.in_primary_datacenter?
|
||||
ENV["PRIMARY_DATACENTER"].present? || Rails.env.local?
|
||||
end
|
||||
|
||||
def reading_request?(request)
|
||||
# Disables writes (and so primary-DB stickiness) in non-primary datacenters
|
||||
super || !DatabaseResolver.in_primary_datacenter?
|
||||
end
|
||||
|
||||
private
|
||||
def read_from_primary?
|
||||
# Only the primary datacenter can read from the primary database, non-primary DCs have local DB replicas
|
||||
super && DatabaseResolver.in_primary_datacenter?
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user