From d1766ef53ddbd91ff414896983e8f3e6b39d2dec Mon Sep 17 00:00:00 2001 From: Sean Griffin Date: Wed, 13 Apr 2016 13:08:00 -0600 Subject: Run Action Cable callbacks through the worker pool Alternate implementation of #24162 with tests. The code had diverged too far on master to pull that implemenation directly. Fixes #23778 Close #24162 [Mattew Draper & Sean Griffin] --- actioncable/lib/action_cable/channel/streams.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'actioncable/lib/action_cable/channel') diff --git a/actioncable/lib/action_cable/channel/streams.rb b/actioncable/lib/action_cable/channel/streams.rb index f654ce0bfa..8b46ac216a 100644 --- a/actioncable/lib/action_cable/channel/streams.rb +++ b/actioncable/lib/action_cable/channel/streams.rb @@ -76,8 +76,11 @@ module ActionCable # Don't send the confirmation until pubsub#subscribe is successful defer_subscription_confirmation! - if handler = callback || block - handler = -> message { handler.(coder.decode(message)) } if coder + if user_handler = callback || block + user_handler = -> message { handler.(coder.decode(message)) } if coder + handler = -> message do + connection.worker_pool.async_invoke(user_handler, :call, message) + end else handler = default_stream_handler(broadcasting, coder: coder) end -- cgit v1.2.3