要旨
fluent-plugin-bigquery
の README を読んでいると、 request_timeout_sec
のデフォルト値が nil
になっている(その下の request_open_timeout_sec
には 60
が設定されているのに)のが気になりました。
結論としては、 request_timeout_sec
は最終的に httpclient
の send_timeout
及び receive_timeout
パラメータとして利用され、未設定の場合は そこで指定されているデフォルト値である send_timeout = 120
, receive_timeout = 60
が採用されるようです。
調査作業ログ
request_timeout_sec
のデフォルト値が nil
なので未設定だと無期限に待ち続けるのかと危惧し、実装を見てみることにしました。(ちなみに私はRuby経験は0ですので、これが妥当な調査手順かはわかりません。)
とりあえずGitHub上で検索してみると out_bigquery_base.rb
で Fluent::BigQuery::Writer.new
の引数として渡されていることがわかりました。
Fluent::BigQuery::Writer
というのはおそらく bigquery/writer.rb
で定義されている Writer
クラスのことだと当たりをつけました。また、Rubyの new
は initialize
メソッドを呼び出すように入門ページに書かれていたので initialize
の処理を見てみると Google::Apis::BigqueryV2::BigqueryService
を利用しているようなコードがありました。 read_timeout_sec
及び send_timeout_sec
フィールドに設定されているようです。
この文字列でGoogle検索してみると google-api-ruby-client
がヒットしました。
client_options
の "client" とは、どうも HTTPClient
のことっぽい、 require
で 階層なし になっているということはRubyの標準モジュールなのか?と検索してみると StackOverflowの回答から ここに行き当たりました。