From b0ccd0e28a350834b5ab8a86e3dff64e497d0aa5 Mon Sep 17 00:00:00 2001 From: Joseph Teichman Date: Tue, 21 Jan 2025 14:43:41 -0500 Subject: [PATCH] RUBY-3604 Fix multithread auth race condition (#2912) Co-authored-by: Dmitry Rybakov --- lib/mongo/auth/credential_cache.rb | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/mongo/auth/credential_cache.rb b/lib/mongo/auth/credential_cache.rb index 16d7962775..c9888ce3dd 100644 --- a/lib/mongo/auth/credential_cache.rb +++ b/lib/mongo/auth/credential_cache.rb @@ -22,19 +22,24 @@ module Auth # # @api private module CredentialCache - class << self attr_reader :store end + MUTEX = Mutex.new + module_function def get(key) - @store ||= {} - @store[key] + MUTEX.synchronize do + @store ||= {} + @store[key] + end end module_function def set(key, value) - @store ||= {} - @store[key] = value + MUTEX.synchronize do + @store ||= {} + @store[key] = value + end end module_function def cache(key) @@ -47,7 +52,9 @@ class << self end module_function def clear - @store = {} + MUTEX.synchronize do + @store = {} + end end end end