module Datadog::Contrib::Presto::Instrumentation::Client::InstanceMethods

Instance methods for Presto::Client

Public Instance Methods

kill(query_id) click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 50
def kill(query_id)
  tracer.trace(Ext::SPAN_KILL, span_options) do |span|
    begin
      decorate!(span)
      span.resource = Ext::SPAN_KILL
      span.span_type = Datadog::Ext::AppTypes::DB
      # ^ not an SQL type span, since there's no SQL query
      span.set_tag(Ext::TAG_QUERY_ID, query_id)
    rescue StandardError => e
      Datadog.logger.debug("error preparing span for presto: #{e}")
    end

    super(query_id)
  end
end
query(query, &blk) click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 35
def query(query, &blk)
  tracer.trace(Ext::SPAN_QUERY, span_options) do |span|
    begin
      decorate!(span)
      span.resource = query
      span.span_type = Datadog::Ext::SQL::TYPE
      span.set_tag(Ext::TAG_QUERY_ASYNC, !blk.nil?)
    rescue StandardError => e
      Datadog.logger.debug("error preparing span for presto: #{e}")
    end

    super(query, &blk)
  end
end
run(query) click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 20
def run(query)
  tracer.trace(Ext::SPAN_QUERY, span_options) do |span|
    begin
      decorate!(span)
      span.resource = query
      span.span_type = Datadog::Ext::SQL::TYPE
      span.set_tag(Ext::TAG_QUERY_ASYNC, false)
    rescue StandardError => e
      Datadog.logger.debug("error preparing span for presto: #{e}")
    end

    super(query)
  end
end

Private Instance Methods

datadog_configuration() click to toggle source
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 68
def datadog_configuration
  Datadog.configuration[:presto]
end
decorate!(span) click to toggle source
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 84
def decorate!(span)
  set_nilable_tag!(span, :server, Datadog::Ext::NET::TARGET_HOST)
  set_nilable_tag!(span, :user, Ext::TAG_USER_NAME)
  set_nilable_tag!(span, :schema, Ext::TAG_SCHEMA_NAME)
  set_nilable_tag!(span, :catalog, Ext::TAG_CATALOG_NAME)
  set_nilable_tag!(span, :time_zone, Ext::TAG_TIME_ZONE)
  set_nilable_tag!(span, :language, Ext::TAG_LANGUAGE)
  set_nilable_tag!(span, :http_proxy, Ext::TAG_PROXY)
  set_nilable_tag!(span, :model_version, Ext::TAG_MODEL_VERSION)

  # Tag as an external peer service
  span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)

  # Set analytics sample rate
  if Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
    Contrib::Analytics.set_sample_rate(span, datadog_configuration[:analytics_sample_rate])
  end
end
set_nilable_tag!(span, key, tag_name) click to toggle source
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 103
def set_nilable_tag!(span, key, tag_name)
  @options[key].tap { |val| span.set_tag(tag_name, val) if val }
end
span_options() click to toggle source
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 72
def span_options
  {
    service: datadog_configuration[:service_name],
    app: Ext::APP,
    app_type: Datadog::Ext::AppTypes::DB
  }
end
tracer() click to toggle source
# File lib/ddtrace/contrib/presto/instrumentation.rb, line 80
def tracer
  datadog_configuration.tracer
end