Method: GraphQL::Tracing::AppOpticsTracing#platform_trace

Defined in:
lib/graphql/tracing/appoptics_tracing.rb

#platform_trace(platform_key, _key, data) ⇒ Object

[View source] [View on GitHub]

44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/graphql/tracing/appoptics_tracing.rb', line 44

def platform_trace(platform_key, _key, data)
  return yield if !defined?(AppOpticsAPM) || gql_config[:enabled] == false

  layer = span_name(platform_key)
  kvs = (data, layer)
  kvs[:Key] = platform_key if (PREP_KEYS + EXEC_KEYS).include?(platform_key)

  transaction_name(kvs[:InboundQuery]) if kvs[:InboundQuery] && layer == 'graphql.execute'

  ::AppOpticsAPM::SDK.trace(layer, kvs) do
    kvs.clear # we don't have to send them twice
    yield
  end
end