From: elkenny@gmail.com
To: ruby-core@ruby-lang.org
Subject: [ruby-core:100410] [Ruby master Bug#17220] Rails Active Job integration test fails with Ruby 3.0.0 since 2038cc6cab6ceeffef3ec3a765c70ae684f829ed
Date: Thu, 15 Oct 2020 23:57:50 +0000 (UTC) [thread overview]
Message-ID: <redmine.journal-88025.20201015235749.2179@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17220.20201007132601.2179@ruby-lang.org
Issue #17220 has been updated by eugeneius (Eugene Kenny).
Here's a small script that reproduces the problem:
```ruby
require "socket"
Socket.getaddrinfo("localhost", nil)
pid = fork do
Socket.getaddrinfo("localhost", nil)
end
Process.wait pid
```
In Rails' test suite, the `fork` happens [[here]](https://github.com/rails/rails/blob/64b1c815323c17d3259e823c53d6a547152e61e3/activejob/test/support/integration/adapters/sidekiq.rb#L27), and the calls to `getaddrinfo` happen in [[redis-rb]](https://github.com/redis/redis-rb/blob/087a11b585978cd3970d22d066b7d8ccd89a40f6/lib/redis/connection/ruby.rb#L193).
It seems like a lock from the first `getaddrinfo` is still in place in the forked process; adding `sleep 1` before forking prevents the hang.
----------------------------------------
Bug #17220: Rails Active Job integration test fails with Ruby 3.0.0 since 2038cc6cab6ceeffef3ec3a765c70ae684f829ed
https://bugs.ruby-lang.org/issues/17220#change-88025
* Author: yahonda (Yasuo Honda)
* Status: Open
* Priority: Normal
* ruby -v: ruby 2.8.0dev (2020-08-27T07:39:13Z v3_0_0_preview1~397 2038cc6cab) [x86_64-linux]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
One of the Rails CI, Active Job integration test with sidekiq, against Ruby 3.0.0 has been failing since August 30, 2020.
According to `git bisect` is is triggered by 2038cc6cab6ceeffef3ec3a765c70ae684f829ed . Somehow this issue only reproduces with Ruby on Docker like `rubylang/ruby:master-nightly-bionic`
It does not reproduce if Ruby is installed locally using `rbenv install 3.0.0-dev` on Ubuntu 20.04 and macOS 11 beta.
### The first failed build job
https://buildkite.com/rails/rails/builds/71321#84b29655-b3df-4b5c-8b20-cbf15ecd9653
``` ruby
Ruby 2.8.0p-1 (2020-08-29 revision d7492a0be885ea9f2b9f71e3e95582f9a859c439) [x86_64-linux]
```
### The last successful build job
https://buildkite.com/rails/rails/builds/71143#369217f7-95f6-4ab9-8ef5-7c6364bd803e
```ruby
Ruby 2.8.0p-1 (2020-08-20 revision a74df67244199d1fd1f7a20b49dd5a096d2a13a2) [x86_64-linux]
```
### `git bisect` result
Performed `git bisect` ruby/ruby repository and it says `2038cc6cab6ceeffef3ec3a765c70ae684f829ed` triggers this build failure.
## Steps to reproduce
1. Install Docker
2. Install Ruby 2.7.1 (or whatever Ruby version to run rake)
3. Create Ruby docker image for 2038cc6cab6ceeffef3ec3a765c70ae684f829ed
```
git clone https://github.com/ruby/ruby-docker-images.git
cd ruby-docker-images
rake docker:build ruby_version=master:2038cc6cab6ceeffef3ec3a765c70ae684f829ed
```
4. Run Rails CI using the Docker image created in step 3
```
cd ~
git clone https://github.com/rails/rails.git
cd rails
git clone https://github.com/rails/buildkite-config .buildkite/
RUBY_IMAGE=rubylang/ruby:master-2038cc6cab6ceeffef3ec3a765c70ae684f829ed-bionic docker-compose -f .buildkite/docker-compose.yml build base && CI=1 docker-compose -f .buildkite/docker-compose.yml run default runner activejob 'AJ_ADAPTER=sidekiq AJ_INTEGRATION_TESTS=true bin/test test/integration/queuing_test.rb --seed 5170'
```
## Actual result
```
Using sidekiq
Run options: --seed 5170
# Running:
.SSSF
Failure:
QueuingTest#test_should_run_job_enqueued_in_the_future_at_the_specified_time [/rails/activejob/test/integration/queuing_test.rb:76]:
Expected false to be truthy.
bin/test test/integration/queuing_test.rb:71
.F
Failure:
QueuingTest#test_should_run_jobs_enqueued_on_a_listening_queue [/rails/activejob/test/integration/queuing_test.rb:14]:
Expected false to be truthy.
bin/test test/integration/queuing_test.rb:11
.SS..F
Failure:
QueuingTest#test_current_locale_is_kept_while_running_perform_later [/rails/activejob/test/integration/queuing_test.rb:102]:
Expected false to be truthy.
bin/test test/integration/queuing_test.rb:93
F
Failure:
QueuingTest#test_current_timezone_is_kept_while_running_perform_later [/rails/activejob/test/integration/queuing_test.rb:119]:
Expected false to be truthy.
bin/test test/integration/queuing_test.rb:110
..
Finished in 34.153644s, 0.4392 runs/s, 0.3514 assertions/s.
15 runs, 12 assertions, 4 failures, 0 errors, 5 skips
You have skipped tests. Run with --verbose for details.
```
## Expected result
It should success as the Ruby as of the previous commit `1035a3b202ee86bf2b0a1d00eefcfff0d7ab9f6b` does.
```
$ RUBY_IMAGE=rubylang/ruby:master-1035a3b202ee86bf2b0a1d00eefcfff0d7ab9f6b-bionic docker-compose -f .buildkite/docker-compose.yml build base && CI=1 docker-compose -f .buildkite/docker-compose.yml run default runner activejob 'AJ_ADAPTER=sidekiq AJ_INTEGRATION_TESTS=true bin/test test/integration/queuing_test.rb --seed 5170'
```
```
+++
+++ activejob: AJ_ADAPTER=sidekiq AJ_INTEGRATION_TESTS=true bin/test test/integration/queuing_test.rb --seed 5170
Using sidekiq
Run options: --seed 5170
# Running:
.SSS....SS.....
Finished in 13.647623s, 1.0991 runs/s, 1.0258 assertions/s.
15 runs, 14 assertions, 0 failures, 0 errors, 5 skips
You have skipped tests. Run with --verbose for details.
```
--
https://bugs.ruby-lang.org/
next prev parent reply other threads:[~2020-10-15 23:57 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-07 13:26 [ruby-core:100329] [Ruby master Bug#17220] Rails Active Job integration test fails with Ruby 3.0.0 since 2038cc6cab6ceeffef3ec3a765c70ae684f829ed yasuo.honda
2020-10-15 23:57 ` elkenny [this message]
2020-10-16 10:49 ` [ruby-core:100419] " nobu
2020-10-26 23:31 ` [ruby-core:100592] " elkenny
2020-10-27 7:28 ` [ruby-core:100596] " nobu
2020-11-24 6:27 ` [ruby-core:101036] " yasuo.honda
2020-11-24 7:07 ` [ruby-core:101037] " sawadatsuyoshi
2020-11-24 7:32 ` [ruby-core:101038] " mame
2020-11-24 7:47 ` [ruby-core:101040] " naruse
2020-11-24 8:28 ` [ruby-core:101041] " naruse
2020-11-24 8:40 ` [ruby-core:101042] " sawadatsuyoshi
2020-11-24 9:05 ` [ruby-core:101043] " naruse
2020-11-24 9:39 ` [ruby-core:101045] " sawadatsuyoshi
2020-11-24 9:47 ` [ruby-core:101046] " naruse
2020-11-24 11:00 ` [ruby-core:101047] " mame
2020-11-25 0:53 ` [ruby-core:101063] " shyouhei
2020-11-25 8:04 ` [ruby-core:101067] " glass.saga
2020-11-25 9:05 ` [ruby-core:101068] " naruse
2020-11-27 9:22 ` [ruby-core:101119] " glass.saga
2020-11-27 11:20 ` [ruby-core:101126] " glass.saga
2020-11-27 12:34 ` [ruby-core:101127] " nobu
2020-11-27 15:14 ` [ruby-core:101133] " glass.saga
2020-12-02 15:20 ` [ruby-core:101205] " glass.saga
2020-12-03 9:41 ` [ruby-core:101213] " nobu
2020-12-04 3:55 ` [ruby-core:101237] " glass.saga
2020-12-04 4:05 ` [ruby-core:101238] " glass.saga
2020-12-04 4:53 ` [ruby-core:101239] " nobu
2020-12-06 14:33 ` [ruby-core:101261] " yasuo.honda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.ruby-lang.org/en/community/mailing-lists/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=redmine.journal-88025.20201015235749.2179@ruby-lang.org \
--to=ruby-core@ruby-lang.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).