her*_*des 7 postgresql activerecord ruby-on-rails amazon-web-services amazon-rds
我在AWS RDS下使用带有多-zo架构的Postgres数据库的Rails应用程序.RDS使用的HA架构是主/从,它们为服务提供指向当前主站的单个端点.
每当有数据库故障转移时,Active Record将继续尝试连接到同一服务器,而不是重试连接以获取主服务器的新IP.
有没有办法为ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket() can't get socket descriptor错误创建一个"全局"救援,只是运行ActiveRecord::Base.connection_pool.disconnect!,使下一个查询工作?
通过对postgres_adapter.
lib/core_ext/active_record/postgresql_adapter.rb:
require 'active_record/connection_adapters/postgresql_adapter'
class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
private
def exec_no_cache(sql, name, binds)
log(sql, name, binds) { @connection.async_exec(sql, []) }
rescue ActiveRecord::StatementInvalid => e
if e.to_s.include?('PG::ConnectionBad')
ActiveRecord::Base.connection_pool.disconnect!
end
raise e
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |