Sha256: 2b317ada2479ccbd968f69ec355a0bb9e2edf151525fec9f7c390a4edde8426c

Contents?: true

Size: 1.5 KB

Versions: 27

Compression:

Stored size: 1.5 KB

Contents

# -*- ruby -*-
# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require 'new_relic/agent/event_aggregator'
require 'new_relic/agent/synthetics_event_buffer'

module NewRelic
  module Agent
    class SyntheticsEventAggregator < EventAggregator

      named :SyntheticsEventAggregator
      capacity_key :'synthetics.events_limit'
      enabled_key :'analytics_events.enabled'
      buffer_class SyntheticsEventBuffer

      def append_or_reject event
        return unless enabled?

        @lock.synchronize do
          @buffer.append_with_reject event
        end
      end

      # slightly different semantics than the EventAggregator for merge
      def merge! payload
        _, events = payload
        @lock.synchronize do
          events.each { |e| @buffer.append_with_reject e}
        end
      end

      private

      def after_harvest metadata
        record_dropped_synthetics metadata
      end

      def record_dropped_synthetics metadata
        num_dropped = metadata[:seen] - metadata[:captured]
        return unless num_dropped > 0

        NewRelic::Agent.logger.debug("Synthetics transaction event limit (#{metadata[:capacity]}) reached. Further synthetics events this harvest period dropped.")

        engine = NewRelic::Agent.instance.stats_engine
        engine.tl_record_supportability_metric_count("SyntheticsEventAggregator/synthetics_events_dropped", num_dropped)
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
newrelic_rpm-5.1.0.344 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-5.0.0.342 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.8.0.341 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.7.1.340 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.7.0.339 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.6.0.338 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.5.0.337 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.4.0.336 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.3.0.335 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.2.0.334 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.1.0.333 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-4.0.0.332 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.18.1.330 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.18.0.329 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.17.2.327 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.17.1.326 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.17.0.325 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.16.3.323 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.16.2.321 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-3.16.1.320 lib/new_relic/agent/synthetics_event_aggregator.rb