Sha256: 92576c4f629f6be52406231f36dfa677d628fef191f0fcc31f5a4ee451ced1aa
Contents?: true
Size: 1.93 KB
Versions: 3
Compression:
Stored size: 1.93 KB
Contents
# (c) Copyright IBM Corp. 2021 # (c) Copyright Instana Inc. 2021 module Instana module Backend # @since 1.197.0 class HostAgent attr_reader :future def initialize(discovery: Concurrent::Atom.new(nil), logger: ::Instana.logger) @discovery = discovery @logger = logger @future = nil end def setup; end def spawn_background_thread return if ENV.key?('INSTANA_TEST') @future = Concurrent::Promises.future do announce end end alias start spawn_background_thread def announce client = until_not_nil { HostAgentLookup.new.call } @discovery.delete_observers @discovery .with_observer(HostAgentActivationObserver.new(client, @discovery)) .with_observer(HostAgentReportingObserver.new(client, @discovery)) @discovery.swap { nil } client end alias after_fork announce # @return [Boolean] true if the agent able to send spans to the backend def ready? ENV.key?('INSTANA_TEST') || !@discovery.value.nil? end # @return [Hash, NilClass] the backend friendly description of the current in process collector def source { e: discovery_value['pid'], h: discovery_value['agentUuid'] }.compact end # @return [Array] extra headers to include in the trace def extra_headers discovery_value['extraHeaders'] end # @return [Hash] values which are removed from urls sent to the backend def secret_values discovery_value['secrets'] end private def until_not_nil loop do result = yield return result unless result.nil? @logger.debug("Waiting on a connection to the agent.") sleep(1) end end def discovery_value v = @discovery.value v || {} end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
instana-1.199.6 | lib/instana/backend/host_agent.rb |
instana-1.199.5 | lib/instana/backend/host_agent.rb |
instana-1.199.4 | lib/instana/backend/host_agent.rb |