[#107008] [Ruby master Bug#18465] Make `IO#write` atomic. — "ioquatix (Samuel Williams)" <noreply@...>
Issue #18465 has been reported by ioquatix (Samuel Williams).
16 messages
2022/01/09
[#107150] [Ruby master Feature#18494] [RFC] ENV["RUBY_GC_..."]= changes GC parameters dynamically — "ko1 (Koichi Sasada)" <noreply@...>
Issue #18494 has been updated by ko1 (Koichi Sasada).
4 messages
2022/01/17
[#107170] Re: [Ruby master Feature#18494] [RFC] ENV["RUBY_GC_..."]= changes GC parameters dynamically
— Eric Wong <normalperson@...>
2022/01/17
> https://bugs.ruby-lang.org/issues/18494
[#107302] [Ruby master Bug#18553] Memory leak on compiling method call with kwargs — "ibylich (Ilya Bylich)" <noreply@...>
Issue #18553 has been reported by ibylich (Ilya Bylich).
4 messages
2022/01/27
[#107346] [Ruby master Misc#18557] DevMeeting-2022-02-17 — "mame (Yusuke Endoh)" <noreply@...>
Issue #18557 has been reported by mame (Yusuke Endoh).
18 messages
2022/01/29
[ruby-core:107358] [Ruby master Bug#18453] YJIT breaks Rails collection caching
From:
"naruse (Yui NARUSE)" <noreply@...>
Date:
2022-01-30 10:06:37 UTC
List:
ruby-core #107358
Issue #18453 has been updated by naruse (Yui NARUSE).
Backport changed from 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONTNEED, 3.1: REQUIRED to 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONE
ruby_3_1 2640161df5cf18d08ec86a0c1b913d4ee99e102a merged revision(s) 5414de4b6e4372af832e338f8eb7a9fe8de17c84.
----------------------------------------
Bug #18453: YJIT breaks Rails collection caching
https://bugs.ruby-lang.org/issues/18453#change-96259
* Author: georgeclaghorn (George Claghorn)
* Status: Closed
* Priority: Normal
* Assignee: jhawthorn (John Hawthorn)
* ruby -v: ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) +YJIT [x86_64-linux]
* Backport: 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONE
----------------------------------------
A minimal app that demonstrates this issue is available [on GitHub](https://github.com/georgeclaghorn/yjit-rails-collection-caching-bug). It has:
* One model, `Post`, with a string `title` attribute.
* One controller action, `posts#index`, which fetches `Post`s in reverse order of creation into `@posts`.
* A root route to `posts#index`.
* One view, `app/views/posts/index.html.erb`, which uses Rails collection rendering and caching as follows:
```erb
<ul>
<li><%= render partial: "posts/post", collection: @posts, cached: true %></li>
</ul>
```
* A partial, `app/views/posts/_post.html.erb` as follows:
```erb
<% cache post do %>
<li><%= post.title %></li>
<% end %>
```
I deployed this app to Heroku [here](https://yjit-rails-caching-bug.herokuapp.com). I configured it to use a Redis cache store.
I added 100 posts like so:
```ruby
$ heroku run rails c
> 100.times do |i|
* Post.create! title: "Post ##{i + 1}"
* end
```
All requests to the app index, `/`, show the posts in reverse chronological order as expected, with cold and warm cache:
```
* Post #100
* Post #99
* Post #98
* Post #97
* Post #96
* Post #95
...
```
I enabled YJIT by setting the `RUBYOPT` environment variable to `--yjit --yjit-exec-mem-size=32` and restarted the app server. I cleared the Redis cache with `heroku run rails r 'Rails.cache.redis.flushall`.
The first request to `/` with cold cache begins repeating Post #1 after #92:
```
* Post #100
* Post #99
* Post #98
* Post #97
* Post #96
* Post #95
* Post #94
* Post #93
* Post #92
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
...
```
All subsequent requests repeat Post #1 100 times:
```
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
* Post #1
...
```
On restart, Post #1 is repeated after #92 for the first request (as in the second-to-last example). Post #1 is repeated 100 times for subsequent requests (as in the last example).
Disabling YJIT and flushing the Redis cache restores the correct behavior.
**Rails version:** GitHub `rails/rails`, `7-0-stable` branch, revision `499f12f6c03a4114eb649310e65200fe5d894db0`
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>