Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions instrumentation/mysql2/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ gemspec

group :test, :development do
gem 'opentelemetry-instrumentation-base', path: '../base'
gem 'opentelemetry-helpers-sql', path: '../../helpers/sql'
gem 'opentelemetry-helpers-mysql', path: '../../helpers/mysql'
gem 'opentelemetry-helpers-sql-obfuscation', path: '../../helpers/sql-obfuscation'
end
Original file line number Diff line number Diff line change
Expand Up @@ -6,50 +6,13 @@

require 'opentelemetry'
require 'opentelemetry-instrumentation-base'
require 'opentelemetry-helpers-sql'

module OpenTelemetry
module Instrumentation
# Contains the OpenTelemetry instrumentation for the Mysql2 gem
module Mysql2
extend self

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

private_constant :CURRENT_ATTRIBUTES_KEY

# Returns the attributes hash representing the Mysql2 context found
# in the optional context or the current context if none is provided.
#
# @param context [optional 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

# @param attributes_hash [Hash] The attributes to add to the context
# @param parent_context [optional Context] The context to use as the parent for
# the returned context
# @return A context containing the merged attributes hash, derived from the
# optional parent context, or the current context if one was not provided.
def context_with_attributes(attributes_hash, parent_context: Context.current)
attributes_hash = attributes(parent_context).merge(attributes_hash)
parent_context.set_value(CURRENT_ATTRIBUTES_KEY, attributes_hash)
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
extend ::OpenTelemetry::Helpers::Sql
end
end
end
Expand Down
1 change: 1 addition & 0 deletions instrumentation/pg/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ gemspec
group :test do
gem 'activerecord', '>= 7.0.0'
gem 'opentelemetry-instrumentation-base', path: '../base'
gem 'opentelemetry-helpers-sql', path: '../../helpers/sql'
gem 'opentelemetry-helpers-sql-obfuscation', path: '../../helpers/sql-obfuscation'
end
31 changes: 2 additions & 29 deletions instrumentation/pg/lib/opentelemetry/instrumentation/pg.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,13 @@

require 'opentelemetry'
require 'opentelemetry-instrumentation-base'
require 'opentelemetry-helpers-sql'

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
extend ::OpenTelemetry::Helpers::Sql
end
end
end
Expand Down
1 change: 1 addition & 0 deletions instrumentation/que/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ gemspec
group :test do
gem 'activerecord', '< 7.2.0', '> 7.0.0'
gem 'pg'
gem 'opentelemetry-helpers-sql', path: '../../helpers/sql'
gem 'opentelemetry-helpers-sql-obfuscation', path: '../../helpers/sql-obfuscation'
gem 'opentelemetry-instrumentation-base', path: '../base'
gem 'opentelemetry-instrumentation-pg', path: '../pg'
Expand Down
1 change: 1 addition & 0 deletions instrumentation/trilogy/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ gemspec
group :test do
gem 'opentelemetry-instrumentation-base', path: '../base'
gem 'opentelemetry-helpers-mysql', path: '../../helpers/mysql'
gem 'opentelemetry-helpers-sql', path: '../../helpers/sql'
gem 'opentelemetry-helpers-sql-obfuscation', path: '../../helpers/sql-obfuscation'
gem 'opentelemetry-propagator-vitess', path: '../../propagator/vitess'
end
Original file line number Diff line number Diff line change
Expand Up @@ -6,50 +6,13 @@

require 'opentelemetry'
require 'opentelemetry-instrumentation-base'
require 'opentelemetry-helpers-sql'

module OpenTelemetry
module Instrumentation
# Contains the OpenTelemetry instrumentation for the Trilogy gem
module Trilogy
extend self

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

private_constant :CURRENT_ATTRIBUTES_KEY

# Returns the attributes hash representing the Trilogy 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

# Returns a context containing the merged attributes hash, derived from the
# optional parent context, or the current context if one was not provided.
#
# @param [optional Context] context The context to use as the parent for
# the returned context
def context_with_attributes(attributes_hash, parent_context: Context.current)
attributes_hash = attributes(parent_context).merge(attributes_hash)
parent_context.set_value(CURRENT_ATTRIBUTES_KEY, attributes_hash)
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
extend ::OpenTelemetry::Helpers::Sql
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ Gem::Specification.new do |spec|

spec.add_dependency 'opentelemetry-api', '~> 1.0'
spec.add_dependency 'opentelemetry-helpers-mysql'
spec.add_dependency 'opentelemetry-helpers-sql'
spec.add_dependency 'opentelemetry-helpers-sql-obfuscation'
spec.add_dependency 'opentelemetry-instrumentation-base', '~> 0.23.0'
spec.add_dependency 'opentelemetry-semantic_conventions', '>= 1.8.0'

spec.add_development_dependency 'appraisal', '~> 2.5'
spec.add_development_dependency 'bundler', '~> 2.4'
spec.add_development_dependency 'minitest', '~> 5.0'
spec.add_development_dependency 'opentelemetry-propagator-vitess', '~> 0.1'
spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1'
spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3'
spec.add_development_dependency 'pry'
Expand Down
Loading