Class: Appsignal::Aggregator

Inherits:
Object
  • Object
show all
Defined in:
lib/appsignal/aggregator.rb,
lib/appsignal/aggregator/post_processor.rb,
lib/appsignal/aggregator/middleware/chain.rb,
lib/appsignal/aggregator/middleware/delete_blanks.rb,
lib/appsignal/aggregator/middleware/action_view_sanitizer.rb,
lib/appsignal/aggregator/middleware/active_record_sanitizer.rb

Defined Under Namespace

Modules: Middleware Classes: PostProcessor

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue = ::ThreadSafe::Array.new, slowness_index = {}) ⇒ Aggregator

Returns a new instance of Aggregator.



5
6
7
8
9
# File 'lib/appsignal/aggregator.rb', line 5

def initialize(queue=::ThreadSafe::Array.new, slowness_index={})
  @queue = queue
  @slowness_index = slowness_index
  @counts = {:regular_request => 0, :slow_request => 0, :exception => 0}
end

Instance Attribute Details

#countsObject (readonly)

Returns the value of attribute counts.



3
4
5
# File 'lib/appsignal/aggregator.rb', line 3

def counts
  @counts
end

#queueObject (readonly)

Returns the value of attribute queue.



3
4
5
# File 'lib/appsignal/aggregator.rb', line 3

def queue
  @queue
end

#slowness_indexObject (readonly)

Returns the value of attribute slowness_index.



3
4
5
# File 'lib/appsignal/aggregator.rb', line 3

def slowness_index
  @slowness_index
end

Instance Method Details

#add(transaction) ⇒ Object

truncates or reduces the size of event values of the transaction, and adds it to the queue.



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/appsignal/aggregator.rb', line 15

def add(transaction)
  case transaction.type
  when :regular_request
    transaction.truncate!
  when :slow_request
    pre_process_slowness!(transaction)
  when :exception
    transaction.clear_events!
    transaction.convert_values_to_primitives!
  end
  counts[transaction.type] += 1
  queue << transaction
end

#has_transactions?Boolean

Informs whether the queue has any transactions in it or not

Returns:

  • (Boolean)


32
33
34
# File 'lib/appsignal/aggregator.rb', line 32

def has_transactions?
  queue.any?
end

#post_processed_queue!Object

Post process the queue and return it



39
40
41
42
# File 'lib/appsignal/aggregator.rb', line 39

def post_processed_queue!
  Appsignal.logger.debug("Post processing queue: #{counts.inspect}")
  Appsignal::Aggregator::PostProcessor.new(queue).post_processed_queue!
end