Czy ten kod jest ThreadSafe?

Hej,
mam problem z Trinidadem (serverem jruby używającym wątków). Otóż w pewnym momencie zamienia log level na ERROR. Podejrzewam o to silencer, więc mam pytanie do ludzi bardziej ogarniętych w wątkowaniu, czy poniższy kod jest ThreadSafe i dlaczego (nie)?:

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/logger_silence.rb

[code=ruby]require ‘active_support/concern’

module LoggerSilence
extend ActiveSupport::Concern

included do
cattr_accessor :silencer
self.silencer = true
end

Silences the logger for the duration of the block.

def silence(temporary_level = Logger::ERROR)
if silencer
begin
old_logger_level, self.level = level, temporary_level
yield self
ensure
self.level = old_logger_level
end
else
yield self
end
end
end[/code]

Ok,
czyli tak: jeśli wątek 1 zostanie przerwany w czasie yield to wątek 2 będzie miał level = ERROR, więc old_logger_level będzie też ERROR i jeśli zakończy się po wątku 1 to ustawi ERROR na amen.

EDIT:
Nie rozumiem tylko jednej rzeczy - czemu to nie zostało jeszcze naprawione? Choć teraz jest to już depricated, może ktoś wie co będzie z tym w Rails 4, 4.1?

Nie jest thread safe.

Wyobraź sobie 2 wątki. Obecnie ustawiony log level na :warning. Wywołujemy w obu wątkach silence(:error).
Pierwszy wątek widzi, że obecny poziom to warning, zapisuje sobie go i zmienia poziom na error. Teraz zaczyna działać drugi wątek, który widzi obecny poziom na error, zapisuje sobie go i zmienia poziom na error. Teraz pierwszy kończy działać i zmienia na warning, ale po nim kończy się drugi i zmienia na error.