Sha256: 43e5b4f55d58b03ac089188d31bab0ec682fee58276a136381561790b2ad6b16

Contents?: true

Size: 1.01 KB

Versions: 12

Compression:

Stored size: 1.01 KB

Contents

# Copyright (c) 2021 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
# frozen_string_literal: true

# ensure that we're being loaded with an agent
# NOTE: THIS CLASS WILL NOT BE RELOADED B/C WE CANNOT RELOAD THE STANDARD
# thread file

# Request context is still tracked per-thread.  There isn't anything
# particularly order-dependent or stateful about request contexts.  It
# exists mostly for reference.
#
# Scope HAS to exist per-fiber.

# Monkey-patching Thread#initialize.
class Thread
  alias_method :cs__initialize, :initialize

  def initialize *args, &block
    # Thread.current still references the original(callee) thread that is
    # instantiating this new fiber during initialization
    Contrast::Components::Scope::MONITOR.synchronize do
      if (current_context = Thread.current[:current_context])
        self[:current_context] = current_context.dup
      end

      Contrast::Components::Scope.sweep_dead_ecs
    end

    cs__initialize(*args, &block)
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
contrast-agent-4.14.0 lib/contrast/extension/thread.rb
contrast-agent-4.13.1 lib/contrast/extension/thread.rb
contrast-agent-4.13.0 lib/contrast/extension/thread.rb
contrast-agent-4.12.0 lib/contrast/extension/thread.rb
contrast-agent-4.11.0 lib/contrast/extension/thread.rb
contrast-agent-4.10.0 lib/contrast/extension/thread.rb
contrast-agent-4.9.1 lib/contrast/extension/thread.rb
contrast-agent-4.9.0 lib/contrast/extension/thread.rb
contrast-agent-4.8.0 lib/contrast/extension/thread.rb
contrast-agent-4.7.0 lib/contrast/extension/thread.rb
contrast-agent-4.6.0 lib/contrast/extension/thread.rb
contrast-agent-4.5.0 lib/contrast/extension/thread.rb