下林明正のブログ

個人的かつ雑多なブログです。

Mongoid 3.1.6でop_timeout, connect_timeout相当を設定したい

ネットで調べるとそれらしい情報出てくるけど大体Mongoid 2の情報で古くて使えない。 結局git cloneしてコードを追っていくのが一番マシという決断をしてそうしてみた。

そんでmongoid, mopedのコードを追っていった結果、 mongoid.ymlに

development:
  sessions:
    default:
      hosts:
        - localhost
      database: vimage_development
      options:
        timeout: 1
        max_retries: 1

みたいな書き方をすればoptionsがMoped::Cluster, Mopped::Node, Mopped::Connectionあたりに引き回されていくっぽいということが分かりました。

connect_timeout相当の部分がtimeout, max_retriesで、Moped::Cluster, Mopped::Nodeに引き回されてるように見えた。 timeoutするまで待ってmax_retries回再試行する?っぽい感じです。なんか他にも色々制御できるオプションがありそうだった。 max_retriesを指定しなかった場合には何故かmax_retries: 20とかになってました。

op_timeout相当の部分はまたtimeoutで、これもまたMopped::Connectionに引き回されて… とか書いてる内にこれもやっぱりconnect_timeout相当な気がしてきた。 どうすればop_timeout相当の設定ができるんだろう。もしかしたらそもそもそんな機能無いかもしれない。

結局良くわからんけどめんどいのでここらへんで切り上げる。 誰かなんか分かってたら教えて下さい。