[ERROR] name=cloudwalk, domain=cloudwalk#run_callbacks: Broken pipe (Errno::EPIPE)
Many times I am getting Broken pipe error because of which the msg sent by the server is not received in Slack channel. How can I fix this issue?
Stack Trace:
/opt/ruby/lib/ruby/2.5.0/openssl/buffering.rb:388:in `syswrite_nonblock'
/opt/ruby/lib/ruby/2.5.0/openssl/buffering.rb:388:in `write_nonblock'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/async-io-1.30.0/lib/async/io/generic.rb:216:in `async_send'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/async-io-1.30.0/lib/async/io/generic.rb:62:in `block in wrap_blocking_method'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/async-io-1.30.0/lib/async/io/generic.rb:156:in `write'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/async-websocket-0.8.0/lib/async/websocket/connection.rb:93:in `write'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/hybi.rb:223:in `send_frame'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/hybi.rb:186:in `frame'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver.rb:122:in `text'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/socket.rb:21:in `send_data'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/client.rb:213:in `send_json'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/api/message.rb:17:in `message'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/client.rb:62:in `say'
/workspace/slack-staging/bot.rb:67:in `block in toggle_heroku'
/workspace/slack-staging/bot.rb:55:in `each'
/workspace/slack-staging/bot.rb:55:in `with_index'
/workspace/slack-staging/bot.rb:55:in `toggle_heroku'
/workspace/slack-staging/commands/paas.rb:22:in `perform'
/workspace/slack-staging/commands/paas.rb:12:in `block in <class:PaaS>'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/commands/base.rb:102:in `call_command'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/commands/base.rb:67:in `block in invoke'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/commands/base.rb:42:in `each_pair'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/commands/base.rb:42:in `invoke'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/hooks/message.rb:12:in `block in call'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/hooks/message.rb:12:in `each'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/hooks/message.rb:12:in `detect'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/hooks/message.rb:12:in `call'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/hooks/set.rb:35:in `block (2 levels) in register_callback'
/opt/ruby/lib/ruby/2.5.0/set.rb:338:in `each_key'
/opt/ruby/lib/ruby/2.5.0/set.rb:338:in `each'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-bot-0.16.0/lib/slack-ruby-bot/hooks/set.rb:34:in `block in register_callback'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/client.rb:270:in `block in run_callbacks'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/client.rb:269:in `each'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/client.rb:269:in `run_callbacks'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/client.rb:247:in `dispatch'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/client.rb:93:in `block (2 levels) in run_loop'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/event_emitter.rb:39:in `block in emit'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/event_emitter.rb:38:in `each'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/event_emitter.rb:38:in `emit'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/hybi.rb:404:in `emit_message'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/hybi.rb:387:in `emit_frame'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/hybi.rb:118:in `parse'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/websocket-driver-0.7.3/lib/websocket/driver/client.rb:63:in `parse'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/async-websocket-0.8.0/lib/async/websocket/connection.rb:63:in `next_event'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/concurrency/async.rb:102:in `run_loop'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/concurrency/async.rb:78:in `connect!'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/client.rb:84:in `run_loop'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/slack-ruby-client-0.15.1/lib/slack/real_time/concurrency/async.rb:50:in `block (2 levels) in start_reactor'
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.5.0/gems/async-1.26.2/lib/async/task.rb:258:in `block in make_fiber'
E, [2020-09-04T09:58:11.045696 #15] ERROR -- #<Async::Task:0x14dceab1a400 connected to #<Addrinfo: 18.229.250.79:443 TCP (cerberus-xxxx.lb.slack-msgs.com)> [fd=21] (running)>: SSL_write: bad length
W, [2020-09-04T09:58:11.045821 #15] WARN -- id=T02RAEMPK, name=cloudwalk, domain=cloudwalk: is offline
D, [2020-09-04T09:58:11.045852 #15] DEBUG -- : id=T02RAEMPK, name=cloudwalk, domain=cloudwalk#restart_async
D, [2020-09-04T09:58:11.045923 #15] DEBUG -- id=T02RAEMPK, name=cloudwalk, domain=cloudwalk#run_loop: NilClass
I, [2020-09-04T09:58:11.046312 #15] INFO -- request: POST https://slack.com/api/rtm.start
I, [2020-09-04T09:58:11.046368 #15] INFO -- request: Accept: "application/json; charset=utf-8"
User-Agent: "Slack Ruby Client/0.15.1"
Content-Type: "application/x-www-form-urlencoded"
I, [2020-09-04T09:58:11.752609 #15] INFO -- response: Status 200
I, [2020-09-04T09:58:11.752747 #15] INFO -- response: date: "Fri, 04 Sep 2020 09:58:11 GMT"
server: "Apache"
x-slack-req-id: "c415261f8e009a957c068e07b49161ab"
x-oauth-scopes: "identify,bot:basic"
x-accepted-oauth-scopes: "rtm:stream,client"
access-control-expose-headers: "x-slack-req-id, retry-after"
x-slack-backend: "r"
x-content-type-options: "nosniff"
expires: "Mon, 26 Jul 1997 05:00:00 GMT"
cache-control: "private, no-cache, no-store, must-revalidate"
x-xss-protection: "0"
vary: "Accept-Encoding"
pragma: "no-cache"
access-control-allow-headers: "slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags"
strict-transport-security: "max-age=31536000; includeSubDomains; preload"
referrer-policy: "no-referrer"
access-control-allow-origin: "*"
transfer-encoding: "chunked"
content-type: "application/json; charset=utf-8"
x-via: "haproxy-www-i59g,haproxy-edge-gru-4s5b"
That's generally a broken RTM connection. You could start by replacing say with a chat_postMessage to see if that helps?
@dblock : Thanks. It worked :) Sorry I am using slack-ruby-bot project. Should I move this issue on that project?
ove
Sure. I don't think it's a bug though or not sure what we should do with it. The RTM connection is not 100% reliable, and just like with any connection, it's on the client to retry in case of failure or for us to build retry into the client.