DEV: Fix connections timeout in system test (#25835)

Why this change?

This regressed in 6e9fbb5bab because we
had a `request.xhr?` check before we decide to block requests. However,
there could not none-xhr requests which we need to block as well at the
end of each system test when `@@block_requests` is true.

This also reverts commit 6437f27f90.
This commit is contained in:
Alan Guo Xiang Tan 2024-02-23 16:03:46 +08:00 committed by GitHub
parent cd6fd515fe
commit ad0824b7e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 50 deletions

View File

@ -254,7 +254,6 @@ jobs:
if: matrix.build_type == 'system' && matrix.target == 'chat' if: matrix.build_type == 'system' && matrix.target == 'chat'
env: env:
CHECKOUT_TIMEOUT: 10 CHECKOUT_TIMEOUT: 10
DEBUG_AR_CONNECTION_QUEUE: 1
run: LOAD_PLUGINS=1 RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose --format documentation plugins/chat/spec/system run: LOAD_PLUGINS=1 RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose --format documentation plugins/chat/spec/system
timeout-minutes: 30 timeout-minutes: 30

View File

@ -54,15 +54,14 @@ if Rails.env.test?
def call(env) def call(env)
request = Rack::Request.new(env) request = Rack::Request.new(env)
if request.xhr? && if (
( @@block_requests ||
@@block_requests || (
( request.xhr? && self.class.current_example_location.present? &&
self.class.current_example_location.present? && self.class.current_example_location !=
self.class.current_example_location != request.cookies[RSPEC_CURRENT_EXAMPLE_COOKIE_STRING]
request.cookies[RSPEC_CURRENT_EXAMPLE_COOKIE_STRING] )
) )
)
[ [
503, 503,
{ "Content-Type" => "text/plain" }, { "Content-Type" => "text/plain" },

View File

@ -1,40 +0,0 @@
# frozen_string_literal: true
if ENV["DEBUG_AR_CONNECTION_QUEUE"] == "1"
module QueuePatch
# Add +element+ to the queue. Never blocks.
def add(element)
puts "::group::##{Process.pid} Adding element to the queue"
puts Thread.current.backtrace.first(30).join("\n")
puts "::endgroup::"
super
end
# If +element+ is in the queue, remove and return it, or +nil+.
def delete(element)
puts "::group::##{Process.pid} Delete element from the queue"
puts Thread.current.backtrace.first(30).join("\n")
puts "::endgroup::"
super
end
# Remove all elements from the queue.
def clear
puts "::group::##{Process.pid} Clear all elements from the queue"
puts Thread.current.backtrace.first(30).join("\n")
puts "::endgroup::"
super
end
private
def remove
puts "::group::##{Process.pid} Removing element from the queue"
puts Thread.current.backtrace.first(30).join("\n")
puts "::endgroup::"
super
end
end
ActiveRecord::ConnectionAdapters::ConnectionPool::Queue.prepend(QueuePatch)
end