Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Undescriptive RuntimeError raised by Kontena::Websocket::Client#send if websocket is still connected, but was closed #23

Open
SpComb opened this issue Nov 21, 2017 · 0 comments

Comments

@SpComb
Copy link
Contributor

SpComb commented Nov 21, 2017

Minor logging bug:Kontena::Websocket::Client#send will raise a bare RuntimeError if a send call happens after a websocket close frame has been sent/received and the socket is no longer in the open state . In the case of the kontena-agent, this can happen if the Kontena::WebsocketClient actor processes a send_request call before it has managed to process the #read => Kontena::Websocket::CloseError and set @connected = false to block further errors. The error should be more descriptive:

D, [2017-11-21T13:04:58.770103 #1] DEBUG -- Kontena::RpcClient: waited 0.1s of 30.0s until: websocket client is connected yielded TrueClass
W, [2017-11-21T13:04:58.774787 #1]  WARN -- Kontena::WebsocketClient:  (RuntimeError)
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:305:in `block in send'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:420:in `block in with_driver'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:417:in `synchronize'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:417:in `with_driver'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:304:in `send'
/app/lib/kontena/websocket_client.rb:293:in `send_request'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in `public_send'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in `dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/call/sync.rb:16:in `dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/cell.rb:50:in `block in dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/cell.rb:76:in `block in task'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/actor.rb:339:in `block in task'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/task.rb:44:in `block in initialize'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/task/fibered.rb:14:in `block in create'
D, [2017-11-21T13:04:58.776521 #1] DEBUG -- Kontena::WebsocketClient: Server closed connection with code 4010: agent version 1.5.0.dev is not compatible with server version 1.4.0.dev
W, [2017-11-21T13:04:58.776671 #1]  WARN -- Kontena::RpcClient:  (RuntimeError)
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:305:in `block in send'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:420:in `block in with_driver'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:417:in `synchronize'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:417:in `with_driver'
/usr/lib/ruby/gems/2.4.0/gems/kontena-websocket-client-0.1.0/lib/kontena/websocket/client.rb:304:in `send'
/app/lib/kontena/websocket_client.rb:293:in `send_request'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in `public_send'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in `dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/call/sync.rb:16:in `dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/cell.rb:50:in `block in dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/cell.rb:76:in `block in task'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/actor.rb:339:in `block in task'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/task.rb:44:in `block in initialize'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/task/fibered.rb:14:in `block in create'
(celluloid):0:in `remote procedure call'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/call/sync.rb:45:in `value'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/proxy/sync.rb:22:in `method_missing'
/app/lib/kontena/rpc_client.rb:72:in `request'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in `public_send'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in `dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/call/async.rb:7:in `dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/cell.rb:50:in `block in dispatch'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/cell.rb:76:in `block in task'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/actor.rb:339:in `block in task'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/task.rb:44:in `block in initialize'
/usr/lib/ruby/gems/2.4.0/gems/celluloid-0.17.3/lib/celluloid/task/fibered.rb:14:in `block in create'
E, [2017-11-21T13:04:58.776832 #1] ERROR -- Kontena::WebsocketClient: master does not accept our version (1.5.0.dev): agent version 1.5.0.dev is not compatible with server version 1.4.0.dev

The same fail unless driver.* pattern also applies to other methods like ping and close.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant