Skip to content

Commit 9108e72

Browse files
committed
Fix dependencies
1 parent 23a3601 commit 9108e72

File tree

5 files changed

+29
-17
lines changed

5 files changed

+29
-17
lines changed

gemfiles/standard.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ def standard_dependencies
4141
gem 'ruby-debug-ide'
4242
end
4343
end
44+
45+
gem 'opentelemetry-api'
4446
end
4547

4648
group :testing do

lib/mongo.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
autoload :CGI, 'cgi'
3434

3535
require 'bson'
36-
require 'opentelemetry-api'
3736

3837
require 'mongo/id'
3938
require 'mongo/bson'

lib/mongo/tracing/open_telemetry/tracer.rb

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def initialize(enabled: nil, query_text_max_length: nil, otel_tracer: nil)
4545
else
4646
enabled
4747
end
48+
check_opentelemetry_loaded
4849
@query_text_max_length = if query_text_max_length.nil?
4950
ENV['OTEL_RUBY_INSTRUMENTATION_MONGODB_QUERY_TEXT_MAX_LENGTH'].to_i
5051
else
@@ -211,17 +212,23 @@ def transaction_map_key(session)
211212

212213
private
213214

215+
def check_opentelemetry_loaded
216+
return unless @enabled
217+
return if defined?(::OpenTelemetry)
218+
219+
Logger.logger.warn('OpenTelemetry tracing for MongoDB is enabled, ' \
220+
'but the OpenTelemetry library is not loaded. ' \
221+
'Disabling tracing.')
222+
@enabled = false
223+
end
224+
214225
def initialize_tracer
215-
if enabled?
216-
# Obtain the proper tracer from OpenTelemetry's tracer provider.
217-
::OpenTelemetry.tracer_provider.tracer(
218-
'mongo-ruby-driver',
219-
Mongo::VERSION
220-
)
221-
else
222-
# No-op tracer when OpenTelemetry is not enabled.
223-
::OpenTelemetry::Trace::Tracer.new
224-
end
226+
return unless enabled?
227+
228+
::OpenTelemetry.tracer_provider.tracer(
229+
'mongo-ruby-driver',
230+
Mongo::VERSION
231+
)
225232
end
226233
end
227234
end

spec/mongo/tracing/open_telemetry/command_tracer_spec.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
require 'spec_helper'
44

5+
require 'opentelemetry'
6+
57
describe Mongo::Tracing::OpenTelemetry::CommandTracer do
68
let(:otel_tracer) { double('OpenTelemetry::Trace::Tracer') }
79
let(:parent_tracer) { double('Mongo::Tracing::OpenTelemetry::Tracer') }
810
let(:query_text_max_length) { 0 }
911
let(:command_tracer) do
1012
described_class.new(otel_tracer, parent_tracer, query_text_max_length: query_text_max_length)
1113
end
14+
let(:lsid_value) { "55dcab94-2c82-445a-a7f2-5ce50213b753" }
1215

1316
let(:connection) do
1417
double('Mongo::Server::Connection',
@@ -29,7 +32,7 @@
2932
{
3033
'find' => 'users',
3134
'$db' => 'test_db',
32-
'lsid' => { 'id' => 'session-123' },
35+
'lsid' => { 'id' => BSON::Binary.from_uuid(lsid_value) },
3336
'filter' => { 'name' => 'Alice' }
3437
}
3538
end
@@ -250,7 +253,7 @@
250253
end
251254

252255
it 'includes db.mongodb.lsid' do
253-
expect(subject['db.mongodb.lsid']).to eq('session-123')
256+
expect(subject['db.mongodb.lsid']).to eq(lsid_value)
254257
end
255258

256259
it 'does not include nil values' do
@@ -421,10 +424,10 @@
421424
subject { command_tracer.send(:lsid, message) }
422425

423426
context 'with lsid present' do
424-
let(:document) { { 'find' => 'users', 'lsid' => { 'id' => 'session-123' } } }
427+
let(:document) { { 'find' => 'users', 'lsid' => { 'id' => BSON::Binary.from_uuid(lsid_value) } } }
425428

426429
it 'returns the session ID' do
427-
expect(subject).to eq('session-123')
430+
expect(subject).to eq(lsid_value)
428431
end
429432
end
430433

@@ -474,7 +477,7 @@
474477
{
475478
'find' => 'users',
476479
'$db' => 'test_db',
477-
'lsid' => { 'id' => 'session-123' },
480+
'lsid' => { 'id' => BSON::Binary.from_uuid(lsid_value) },
478481
'filter' => { 'name' => 'Alice' }
479482
}
480483
end

spec/mongo/tracing/open_telemetry/operation_tracer_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
require 'spec_helper'
44

5+
require 'opentelemetry'
6+
57
describe Mongo::Tracing::OpenTelemetry::OperationTracer do
68
# rubocop:disable RSpec/VerifiedDoubles
7-
# OpenTelemetry classes may not be loaded, so we use regular doubles
89
let(:otel_tracer) { double('OpenTelemetry::Trace::Tracer') }
910
let(:parent_tracer) do
1011
instance_double(

0 commit comments

Comments
 (0)