telegram-bot icon indicating copy to clipboard operation
telegram-bot copied to clipboard

Poller connection issues

Open adastreamer opened this issue 1 year ago • 1 comments

Hello,

I'm running bot in poller mode and getting timeout and SSL issues sometimes.

Here is how I launch poller in rake task: Telegram::Bot::UpdatesPoller.new(Telegram.bots[:default], BotController).start

Library version: 0.15.7 Runtime: Docker Docker base image: ubuntu:22.04 Ruby version: 3.0.2 Rails version: 7.0.6

Here is what I get in logs:

poller_1    | OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/ssl_socket.rb:62:in `gets'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:805:in `block in parse_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/timeout-0.4.0/lib/timeout.rb:186:in `block in timeout'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/timeout-0.4.0/lib/timeout.rb:193:in `timeout'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:801:in `parse_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:784:in `read_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:561:in `get_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1299:in `do_get_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1245:in `do_get_block'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1019:in `block in do_request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1133:in `protect_keep_alive_disconnected'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1014:in `do_request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:856:in `request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:765:in `post'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/client.rb:75:in `http_request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/client.rb:66:in `request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/async.rb:151:in `request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/client/api_helper.rb:22:in `block (2 levels) in define_helpers'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:71:in `block in fetch_updates'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/async.rb:138:in `async'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:71:in `fetch_updates'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:58:in `run'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:47:in `start'
poller_1    | /services/lib/tasks/bot.rake:4:in `block (2 levels) in <main>'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
poller_1    | HTTPClient::ReceiveTimeoutError: execution expired
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/ssl_socket.rb:62:in `gets'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:805:in `block in parse_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/timeout-0.4.0/lib/timeout.rb:186:in `block in timeout'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/timeout-0.4.0/lib/timeout.rb:193:in `timeout'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:801:in `parse_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:784:in `read_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient/session.rb:561:in `get_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1299:in `do_get_header'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1245:in `do_get_block'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1019:in `block in do_request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1133:in `protect_keep_alive_disconnected'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:1014:in `do_request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:856:in `request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/httpclient-2.8.3/lib/httpclient.rb:765:in `post'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/client.rb:75:in `http_request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/client.rb:66:in `request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/async.rb:151:in `request'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/client/api_helper.rb:22:in `block (2 levels) in define_helpers'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:71:in `block in fetch_updates'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/async.rb:138:in `async'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:71:in `fetch_updates'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:58:in `run'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/telegram-bot-0.15.7/lib/telegram/bot/updates_poller.rb:47:in `start'
poller_1    | /services/lib/tasks/bot.rake:4:in `block (2 levels) in <main>'
poller_1    | /services/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'

I understand that it might be a connection issue, but seems like there is a timeout or something which stale the connection. Maybe there is a way to keep connection alive?

adastreamer avatar Jul 27 '23 13:07 adastreamer

How long does app run before you get this error? Is it in prod on in dev?

printercu avatar Jul 27 '23 16:07 printercu