lib/new_relic/agent/agent.rb in newrelic_rpm-8.9.0 vs lib/new_relic/agent/agent.rb in newrelic_rpm-8.10.0
- old
+ new
@@ -1,8 +1,9 @@
# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
+# frozen_string_literal: true
require 'socket'
require 'net/https'
require 'net/http'
require 'logger'
@@ -67,27 +68,27 @@
@events = EventListener.new
@stats_engine = StatsEngine.new
@transaction_sampler = TransactionSampler.new
@sql_sampler = SqlSampler.new
- @agent_command_router = Commands::AgentCommandRouter.new @events
- @monitors = Monitors.new @events
- @error_collector = ErrorCollector.new @events
+ @agent_command_router = Commands::AgentCommandRouter.new(@events)
+ @monitors = Monitors.new(@events)
+ @error_collector = ErrorCollector.new(@events)
@transaction_rules = RulesEngine.new
- @harvest_samplers = SamplerCollection.new @events
+ @harvest_samplers = SamplerCollection.new(@events)
@monotonic_gc_profiler = VM::MonotonicGCProfiler.new
- @javascript_instrumentor = JavascriptInstrumentor.new @events
+ @javascript_instrumentor = JavascriptInstrumentor.new(@events)
@adaptive_sampler = AdaptiveSampler.new(Agent.config[:sampling_target],
Agent.config[:sampling_target_period_in_seconds])
- @harvester = Harvester.new @events
+ @harvester = Harvester.new(@events)
@after_fork_lock = Mutex.new
- @transaction_event_recorder = TransactionEventRecorder.new @events
- @custom_event_aggregator = CustomEventAggregator.new @events
- @span_event_aggregator = SpanEventAggregator.new @events
- @log_event_aggregator = LogEventAggregator.new @events
+ @transaction_event_recorder = TransactionEventRecorder.new(@events)
+ @custom_event_aggregator = CustomEventAggregator.new(@events)
+ @span_event_aggregator = SpanEventAggregator.new(@events)
+ @log_event_aggregator = LogEventAggregator.new(@events)
@connect_state = :pending
@connect_attempts = 0
@waited_on_connect = nil
@connected_pid = nil
@@ -207,11 +208,11 @@
!Agent.config[:agent_enabled] ||
!Agent.config[:monitor_mode] ||
disconnected? ||
!control.security_settings_valid?
- ::NewRelic::Agent.logger.debug "Starting the worker thread in #{Process.pid} (parent #{Process.ppid}) after forking."
+ ::NewRelic::Agent.logger.debug("Starting the worker thread in #{Process.pid} (parent #{Process.ppid}) after forking.")
channel_id = options[:report_to_channel]
install_pipe_service(channel_id) if channel_id
# Clear out locks and stats left over from parent process
@@ -354,11 +355,11 @@
# When we have a problem connecting to the server, we need
# to tell the user what happened, since this is not an error
# we can handle gracefully.
def log_error(error)
- ::NewRelic::Agent.logger.error "Error establishing connection with New Relic Service at #{control.server}:", error
+ ::NewRelic::Agent.logger.error("Error establishing connection with New Relic Service at #{control.server}:", error)
end
# When the server sends us an error with the license key, we
# want to tell the user that something went wrong, and let
# them know where to go to get a valid license key
@@ -397,30 +398,31 @@
# Builds the payload to send to the connect service,
# connects, then configures the agent using the response from
# the connect service
def connect_to_server
- request_builder = ::NewRelic::Agent::Connect::RequestBuilder.new \
+ request_builder = ::NewRelic::Agent::Connect::RequestBuilder.new( \
@service,
Agent.config,
event_harvest_config,
environment_for_connect
- connect_response = @service.connect request_builder.connect_payload
+ )
+ connect_response = @service.connect(request_builder.connect_payload)
response_handler = ::NewRelic::Agent::Connect::ResponseHandler.new(self, Agent.config)
response_handler.configure_agent(connect_response)
- log_connection connect_response if connect_response
+ log_connection(connect_response) if connect_response
connect_response
end
# Logs when we connect to the server, for debugging purposes
# - makes sure we know if an agent has not connected
def log_connection(config_data)
- ::NewRelic::Agent.logger.debug "Connected to NewRelic Service at #{@service.collector.name}"
- ::NewRelic::Agent.logger.debug "Agent Run = #{@service.agent_id}."
- ::NewRelic::Agent.logger.debug "Connection data = #{config_data.inspect}"
+ ::NewRelic::Agent.logger.debug("Connected to NewRelic Service at #{@service.collector.name}")
+ ::NewRelic::Agent.logger.debug("Agent Run = #{@service.agent_id}.")
+ ::NewRelic::Agent.logger.debug("Connection data = #{config_data.inspect}")
if config_data['messages'] && config_data['messages'].any?
log_collector_messages(config_data['messages'])
end
end
@@ -480,11 +482,11 @@
end
end
def merge_data_for_endpoint(endpoint, data)
if data && !data.empty?
- container = container_for_endpoint endpoint
+ container = container_for_endpoint(endpoint)
if container.respond_to?(:has_metadata?) && container.has_metadata?
container_for_endpoint(endpoint).merge!(data, false)
else
container_for_endpoint(endpoint).merge!(data)
end
@@ -520,11 +522,11 @@
}
opts = defaults.merge(options)
return unless should_connect?(opts[:force_reconnect])
- ::NewRelic::Agent.logger.debug "Connecting Process to New Relic: #$0"
+ ::NewRelic::Agent.logger.debug("Connecting Process to New Relic: #$0")
connect_to_server
@connected_pid = $$
@connect_state = :connected
signal_connected
rescue NewRelic::Agent::ForceDisconnectException => e
@@ -539,16 +541,16 @@
raise if Thread.current.status == 'aborting'
log_error(e)
if opts[:keep_retrying]
note_connect_failure
- ::NewRelic::Agent.logger.info "Will re-attempt in #{connect_retry_period} seconds"
- sleep connect_retry_period
+ ::NewRelic::Agent.logger.info("Will re-attempt in #{connect_retry_period} seconds")
+ sleep(connect_retry_period)
retry
end
rescue Exception => e
- ::NewRelic::Agent.logger.error "Exception of unexpected type during Agent#connect():", e
+ ::NewRelic::Agent.logger.error("Exception of unexpected type during Agent#connect():", e)
raise
end
# Delegates to the control class to determine the root
@@ -574,18 +576,18 @@
# merge the given payload back into the internal buffer of the
# container, so that it may be harvested again later.
#
def harvest_and_send_from_container(container, endpoint)
payload = harvest_from_container(container, endpoint)
- sample_count = harvest_size container, payload
+ sample_count = harvest_size(container, payload)
if sample_count > 0
NewRelic::Agent.logger.debug("Sending #{sample_count} items to #{endpoint}")
send_data_to_endpoint(endpoint, payload, container)
end
end
- def harvest_size container, items
+ def harvest_size(container, items)
if container.respond_to?(:has_metadata?) && container.has_metadata? && !items.empty?
items.last.size
else
items.size
end
@@ -655,11 +657,11 @@
def harvest_and_send_custom_event_data
harvest_and_send_from_container(@custom_event_aggregator, :custom_event_data)
end
def harvest_and_send_error_event_data
- harvest_and_send_from_container @error_collector.error_event_aggregator, :error_event_data
+ harvest_and_send_from_container(@error_collector.error_event_aggregator, :error_event_data)
end
def harvest_and_send_span_event_data
harvest_and_send_from_container(span_event_aggregator, :span_event_data)
end
@@ -715,11 +717,11 @@
def transmit_single_data_type(harvest_method, supportability_name)
now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
msg = "Sending #{supportability_name} data to New Relic Service"
- ::NewRelic::Agent.logger.debug msg
+ ::NewRelic::Agent.logger.debug(msg)
@service.session do # use http keep-alive
self.send(harvest_method)
end
ensure
@@ -727,11 +729,11 @@
NewRelic::Agent.record_metric("Supportability/#{supportability_name}Harvest", duration)
end
def transmit_data
now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
- ::NewRelic::Agent.logger.debug "Sending data to New Relic Service"
+ ::NewRelic::Agent.logger.debug("Sending data to New Relic Service")
@events.notify(:before_harvest)
@service.session do # use http keep-alive
harvest_and_send_errors
harvest_and_send_error_event_data
@@ -769,20 +771,20 @@
transmit_error_event_data
transmit_span_event_data
transmit_log_event_data
if @connected_pid == $$ && !@service.kind_of?(NewRelic::Agent::NewRelicService)
- ::NewRelic::Agent.logger.debug "Sending New Relic service agent run shutdown message"
+ ::NewRelic::Agent.logger.debug("Sending New Relic service agent run shutdown message")
@service.shutdown
else
- ::NewRelic::Agent.logger.debug "This agent connected from parent process #{@connected_pid}--not sending shutdown"
+ ::NewRelic::Agent.logger.debug("This agent connected from parent process #{@connected_pid}--not sending shutdown")
end
- ::NewRelic::Agent.logger.debug "Graceful disconnect complete"
+ ::NewRelic::Agent.logger.debug("Graceful disconnect complete")
rescue Timeout::Error, StandardError => e
- ::NewRelic::Agent.logger.debug "Error when disconnecting #{e.class.name}: #{e.message}"
+ ::NewRelic::Agent.logger.debug("Error when disconnecting #{e.class.name}: #{e.message}")
end
else
- ::NewRelic::Agent.logger.debug "Bypassing graceful disconnect - agent not connected"
+ ::NewRelic::Agent.logger.debug("Bypassing graceful disconnect - agent not connected")
end
end
end
extend ClassMethods