From 9a77b0fe2808d01016530515299b265912a42026 Mon Sep 17 00:00:00 2001 From: Maciej Mensfeld Date: Sun, 20 Nov 2022 20:50:06 +0100 Subject: [PATCH] Make sure that concurrent map usage is thread-safe Behavior upon missing prefix partial name may cause a key to overwrite when executed in multiple threads at the same time. ref https://github.com/ruby-concurrency/concurrent-ruby/issues/970 --- actionview/lib/action_view/renderer/abstract_renderer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actionview/lib/action_view/renderer/abstract_renderer.rb b/actionview/lib/action_view/renderer/abstract_renderer.rb index efecade8317df..844cf49b01135 100644 --- a/actionview/lib/action_view/renderer/abstract_renderer.rb +++ b/actionview/lib/action_view/renderer/abstract_renderer.rb @@ -31,7 +31,7 @@ def render module ObjectRendering # :nodoc: PREFIXED_PARTIAL_NAMES = Concurrent::Map.new do |h, k| - h[k] = Concurrent::Map.new + h.compute_if_absent(k) { Concurrent::Map.new } end def initialize(lookup_context, options)