Permalink
Browse files

use thread variable in TaggedLogging

previous solution can cause race conditions under GIL-free ruby implementations
  • Loading branch information...
1 parent 247d274 commit 6e76f8f5c05cb2f00d7a2f4d58e6dd35a23655f6 @lest lest committed Jan 16, 2012
Showing with 2 additions and 3 deletions.
  1. +2 −3 activesupport/lib/active_support/tagged_logging.rb
@@ -14,7 +14,6 @@ module ActiveSupport
class TaggedLogging
def initialize(logger)
@logger = logger
- @tags = Hash.new { |h,k| h[k] = [] }
end
def tagged(*new_tags)
@@ -39,7 +38,7 @@ def #{severity}(progname = nil, &block) # def warn(progname = nil,
end
def flush
- @tags.delete(Thread.current)
+ current_tags.clear
@logger.flush if @logger.respond_to?(:flush)
end
@@ -57,7 +56,7 @@ def tags_text
end
def current_tags
- @tags[Thread.current]
+ Thread.current[:activesupport_tagged_logging_tags] ||= []
end
end
end

0 comments on commit 6e76f8f

Please sign in to comment.