slack-ruby-client icon indicating copy to clipboard operation
slack-ruby-client copied to clipboard

[ERROR] name=cloudwalk, domain=cloudwalk#run_callbacks: Broken pipe (Errno::EPIPE)

Open kumarsukhani opened this issue 5 years ago • 3 comments

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" 

kumarsukhani avatar Sep 04 '20 10:09 kumarsukhani

That's generally a broken RTM connection. You could start by replacing say with a chat_postMessage to see if that helps?

dblock avatar Sep 04 '20 12:09 dblock

@dblock : Thanks. It worked :) Sorry I am using slack-ruby-bot project. Should I move this issue on that project?

kumarsukhani avatar Sep 08 '20 07:09 kumarsukhani

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.

dblock avatar Sep 08 '20 13:09 dblock