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
# 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.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)


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

def has_transactions?
  queue.any?
end

#post_processed_queue!Object

Post process the queue and return it



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

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