aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2016-08-16 09:54:28 +0930
committerGitHub <noreply@github.com>2016-08-16 09:54:28 +0930
commitd0bdd74d7f6fae3d69b3681d5bc2d5ef6f55a0f8 (patch)
tree5bfa3f6120f2599cebe8df72471d9e5038df69a0 /actionpack/test/controller
parentce234237b580011acca600ede6eb422fcf8f4b45 (diff)
parent285d7cad6a4b93cdeea469e6cc4504a934907746 (diff)
downloadrails-d0bdd74d7f6fae3d69b3681d5bc2d5ef6f55a0f8.tar.gz
rails-d0bdd74d7f6fae3d69b3681d5bc2d5ef6f55a0f8.tar.bz2
rails-d0bdd74d7f6fae3d69b3681d5bc2d5ef6f55a0f8.zip
Merge pull request #26177 from achinn/ac-live-deadlock
Fix ActionController::Live deadlock
Diffstat (limited to 'actionpack/test/controller')
-rw-r--r--actionpack/test/controller/live_stream_test.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/actionpack/test/controller/live_stream_test.rb b/actionpack/test/controller/live_stream_test.rb
index 3ea02f0a19..9ec37e7559 100644
--- a/actionpack/test/controller/live_stream_test.rb
+++ b/actionpack/test/controller/live_stream_test.rb
@@ -150,6 +150,20 @@ module ActionController
response.stream.close
end
+ def write_sleep_autoload
+ path = File.join(File.dirname(__FILE__), "../fixtures")
+ ActiveSupport::Dependencies.autoload_paths << path
+
+ response.headers["Content-Type"] = "text/event-stream"
+ response.stream.write "before load"
+ sleep 0.01
+ ::LoadMe
+ response.stream.close
+ latch.count_down
+
+ ActiveSupport::Dependencies.autoload_paths.reject! {|p| p == path}
+ end
+
def thread_locals
tc.assert_equal "aaron", Thread.current[:setting]
@@ -281,6 +295,14 @@ module ActionController
assert_equal "text/event-stream", @response.headers["Content-Type"]
end
+ def test_delayed_autoload_after_write_within_interlock_hook
+ # Simulate InterlockHook
+ ActiveSupport::Dependencies.interlock.start_running
+ res = get :write_sleep_autoload
+ res.each {}
+ ActiveSupport::Dependencies.interlock.done_running
+ end
+
def test_async_stream
rubinius_skip "https://github.com/rubinius/rubinius/issues/2934"