Sha256: 4c0b9843a791e40f85533a59dd87e3ce66615d981a80bbaa3a3c1f3133a2c9f1

Contents?: true

Size: 1.59 KB

Versions: 9

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

# Copyright The OpenTelemetry Authors
#
# SPDX-License-Identifier: Apache-2.0

require 'opentelemetry'
require 'opentelemetry-instrumentation-base'

module OpenTelemetry
  module Instrumentation
    # Contains the OpenTelemetry instrumentation for the Pg gem
    module PG
      extend self

      CURRENT_ATTRIBUTES_KEY = Context.create_key('pg-attributes-hash')

      private_constant :CURRENT_ATTRIBUTES_KEY

      # Returns the attributes hash representing the postgres client context found
      # in the optional context or the current context if none is provided.
      #
      # @param [optional Context] context The context to lookup the current
      #   attributes hash. Defaults to Context.current
      def attributes(context = nil)
        context ||= Context.current
        context.value(CURRENT_ATTRIBUTES_KEY) || {}
      end

      # Activates/deactivates the merged attributes hash within the current Context,
      # which makes the "current attributes hash" available implicitly.
      #
      # On exit, the attributes hash that was active before calling this method
      # will be reactivated.
      #
      # @param [Span] span the span to activate
      # @yield [Hash, Context] yields attributes hash and a context containing the
      #   attributes hash to the block.
      def with_attributes(attributes_hash)
        attributes_hash = attributes.merge(attributes_hash)
        Context.with_value(CURRENT_ATTRIBUTES_KEY, attributes_hash) { |c, h| yield h, c }
      end
    end
  end
end

require_relative './pg/instrumentation'
require_relative './pg/version'

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
opentelemetry-instrumentation-pg-0.25.2 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.25.1 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.25.0 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.24.0 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.23.0 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.22.3 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.22.2 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.22.1 lib/opentelemetry/instrumentation/pg.rb
opentelemetry-instrumentation-pg-0.22.0 lib/opentelemetry/instrumentation/pg.rb