Project

General

Profile

Bug #19996

Updated by yahonda (Yasuo Honda) about 1 year ago

### Steps to reproduce 
 1. Install `ruby 3.3.0dev`  
 2. Set `RUBY_MN_THREADS=1` environment variable 
 3. Follow these steps 

 ``` 
 git clone https://github.com/rails/rails 
 cd rails 
 rm Gemfile.lock 
 bundle install 
 cd actioncable 
 bin/test test/channel/base_test.rb test/subscription_adapter/redis_test.rb test/channel/test_case_test.rb test/subscription_adapter/redis_test.rb test/client_test.rb --seed 14800 
 ``` 

 ### Expected behavior 
 It should pass as not setting `RUBY_MN_THREADS`. 

  

 ``` 
 $ unset RUBY_MN_THREADS 
 $ bin/test test/channel/base_test.rb test/subscription_adapter/redis_test.rb test/channel/test_case_test.rb test/subscription_adapter/redis_test.rb test/client_test.rb --seed 14800 
 /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.20.0/lib/minitest.rb:3: warning: mutex_m which will no longer be part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile or gemspec. 
 Run options: --seed 14800 

 # Running: 

 ......................................................................... 

 Finished in 12.031310s, 6.0675 runs/s, 46.7115 assertions/s. 
 73 runs, 562 assertions, 0 failures, 0 errors, 0 skips 
 $ 
 ``` 

 ### Actual behavior 
 It usually fails as follows. 

 ``` 
 $ bin/test test/channel/base_test.rb test/subscription_adapter/redis_test.rb test/channel/test_case_test.rb test/subscription_adapter/redis_test.rb test/client_test.rb --seed 14800 
 /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/minitest-5.20.0/lib/minitest.rb:3: warning: mutex_m which will no longer be part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile or gemspec. 
 Run options: --seed 14800 

 # Running: 

 ..................................................F 

 Failure: 
 RedisAdapterTest::AlternateConfiguration#test_channel_prefix [/home/yahonda/src/github.com/rails/rails/actioncable/test/subscription_adapter/common.rb:35]: 
 Expected #<Concurrent::Event:0x00007f0b2698d4f0 @__Lock__=#<Thread::Mutex:0x00007f0b26f8cab8>, @__Condition__=#<Thread::ConditionVariable:0x00007f0b26f8ca90>, @set=false, @iteration=0> to be set?. 


 bin/test test/subscription_adapter/channel_prefix.rb:6 

 .F 

 Failure: 
 RedisAdapterTest::AlternateConfiguration#test_multiple_broadcast [/home/yahonda/src/github.com/rails/rails/actioncable/test/subscription_adapter/common.rb:35]: 
 Expected #<Concurrent::Event:0x00007f0b2698a4d0 @__Lock__=#<Thread::Mutex:0x00007f0b26fac688>, @__Condition__=#<Thread::ConditionVariable:0x00007f0b26fac4f8>, @set=false, @iteration=0> to be set?. 


 bin/test test/subscription_adapter/common.rb:74 

 E 

 Error: 
 ClientTest#test_interacting_clients: 
 ThreadError: queue empty 
     <internal:thread_sync>:18:in `pop' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:168:in `read_message' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:241:in `block (2 levels) in test_interacting_clients' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:218:in `block (2 levels) in concurrently' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/promises.rb:1583:in `evaluate_to' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/promises.rb:1766:in `block in on_resolvable' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:352:in `run_task' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:343:in `block (3 levels) in create_worker' 
     <internal:kernel>:187:in `loop' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:334:in `block (2 levels) in create_worker' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:333:in `catch' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:333:in `block in create_worker' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/promises.rb:1258:in `raise' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/promises.rb:1258:in `wait_until_resolved!' 
     /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby/concurrent/promises.rb:988:in `value!' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:218:in `map' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:218:in `concurrently' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:240:in `block in test_interacting_clients' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:90:in `with_puma_server' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:234:in `test_interacting_clients' 


 bin/test test/client_test.rb:233 

 E 

 Error: 
 ClientTest#test_disappearing_client: 
 ThreadError: queue empty 
     <internal:thread_sync>:18:in `pop' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:168:in `read_message' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:275:in `block in test_disappearing_client' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:90:in `with_puma_server' 
     /home/yahonda/src/github.com/rails/rails/actioncable/test/client_test.rb:273:in `test_disappearing_client' 


 bin/test test/client_test.rb:272 

 .................. 

 Finished in 1323.812615s, 0.0551 runs/s, 0.3830 assertions/s. 
 73 runs, 507 assertions, 2 failures, 2 errors, 0 skips 
 $ 
 ```

Back