2014年10月10日金曜日

railsでoctopus使ってたら起動直後にエラー出る件

railsでmaster-slave構成のDBサーバと接続するのにoctopusを使ってみたのですが、
unicornで複数プロセスをforkさせるようにしていると、
プロセスのfork直後にoctopusが以下のエラー吐いてたので対応調べてみました。

以下がエラー内容。
どうやらDBへの接続がうまくいってないようです。
一発目の実行時だけで、その後はエラー出ないのでfork直後にだけ起こるようです。
NoMethodError: undefined method `query' for nil:NilClass: SHOW FULL FIELDS FROM `mst_services`

config/unicorn.rbに以下を記述するとエラー出なくなりました。
after_fork do |server, worker|
    ActiveRecord::Base.connection_proxy.instance_variable_get(:@shards).each {|k,v| v.clear_reloadable_connections! }
end


参考URL
https://github.com/tchandy/octopus/issues/59

0 件のコメント:

コメントを投稿