class XRay::Subsegment

The work done in a single segment can be broke down into subsegments. Subsegments provide more granular timing information and details about downstream calls that your application made to fulfill the original request. A subsegment can contain additional details about a call to an AWS service, an external HTTP API, or an SQL database.

Attributes

segment[R]
sql[RW]

Public Class Methods

new(name:, segment:, namespace: 'local') click to toggle source

@param [String] name The subsegment name. @param [Segment] segment The root parent segment. This segment

may not be its direct parent.

@param [String] namespace Currently supported namespaces are

'remote', 'aws', 'local'.
# File lib/aws-xray-sdk/model/subsegment.rb, line 20
def initialize(name:, segment:, namespace: 'local')
  @name = name
  @segment = segment
  @namespace = namespace
  @start_time = Time.now.to_f
  @sampled = true
end

Public Instance Methods

add_subsegment(subsegment:) click to toggle source
Calls superclass method XRay::Entity#add_subsegment
# File lib/aws-xray-sdk/model/subsegment.rb, line 28
def add_subsegment(subsegment:)
  super subsegment: subsegment
  segment.ref_counter += 1
  segment.subsegment_size += 1
end
all_children_count() click to toggle source

Returns the number of its direct and indirect children. This is useful when we remove the reference to a subsegment and need to keep remaining subsegment size accurate.

# File lib/aws-xray-sdk/model/subsegment.rb, line 52
def all_children_count
  size = subsegments.count
  subsegments.each { |v| size += v.all_children_count }
  size
end
close(end_time: nil) click to toggle source
Calls superclass method XRay::Entity#close
# File lib/aws-xray-sdk/model/subsegment.rb, line 40
def close(end_time: nil)
  super end_time: end_time
  segment.decrement_ref_counter
end
remove_subsegment(subsegment:) click to toggle source
Calls superclass method XRay::Entity#remove_subsegment
# File lib/aws-xray-sdk/model/subsegment.rb, line 34
def remove_subsegment(subsegment:)
  super subsegment: subsegment
  cur = segment.subsegment_size
  segment.subsegment_size = cur - subsegment.all_children_count - 1
end
to_h() click to toggle source
Calls superclass method XRay::Entity#to_h
# File lib/aws-xray-sdk/model/subsegment.rb, line 58
def to_h
  h = super
  h[:trace_id] = segment.trace_id
  h[:sql] = sql unless sql.empty?
  h[:type] = 'subsegment'
  h[:namespace] = namespace if namespace
  h
end