类:Mongo::Tracing::OpenTelemetry::CommandTracer Private

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/tracing/open_telemetry/command_tracer.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

CommandTracer 负责使用 OpenTelemetry 跟踪MongoDB服务器命令。

实例方法摘要折叠

构造函数详情

#initialize(otel_tracer, parent_tracer, query_text_max_length: 0) ⇒ CommandTracer

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

初始化新的 CommandTracer。

参数:

  • otel_tracer ( OpenTelemetry::Trace::Tracer )

    OpenTelemetry 跟踪器。

  • parent_tracer (Mongo::Tracing::OpenTelemetry::Tracer)

    用于访问共享上下文映射的父跟踪器。

  • query_text_max_length 整数 (默认为: 0

    捕获的查询文本的最大长度。默认为 0(无查询文本捕获)。



31
32
33
34
35
# 文件 'lib/ Mongo/tracing/open_telemetry/command_tracer.rb', line 31

def 初始化(otel_tracer, parent_tracer, query_text_max_length: 0)
  @otel_tracer = otel_tracer
  @parent_tracer = parent_tracer
  @query_text_max_length = query_text_max_length
end

实例方法详细信息

#start_span (message, operation_context, connection) ⇒ 对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

为MongoDB命令启动跨度。

参数:



42
# 文件 'lib/ Mongo/tracing/open_telemetry/command_tracer.rb', line 42

def start_span(message, operation_context, 连接) end

#trace_command (message, _operation_context, connection) {... } ⇒ 对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

跟踪MongoDB命令。

为命令创建 OpenTelemetry 跨度,捕获命令名称、数据库名称、集合名称、服务器解决、连接 ID 和(可选)查询文本等属性。该跨度自动嵌套在当前操作跨度下,并在命令完成或失败时完成。

rubocop:disable Lint/RescueException

参数:

产量:

  • 表示要跟踪的命令的区块。

返回:

  • ( Object )

    命令的结果。



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 文件 'lib/ Mongo/tracing/open_telemetry/command_tracer.rb', line 59

def trace_command(message, 操作, 连接)
  # 命令应始终嵌套在其操作范围下,而不是直接在
  #ACID 事务跨度。不要传递 with_parent 以使用自动父级解析
  # 从当前活动范围(操作范围)开始。
  span = create_command_span(message, 连接)
  ::OpenTelemetry::TRACE.with_span(span) do |s, C|
    产量.点击 do |结果|
      process_command_result(结果, cursor_id(message), C, s)
    end
  end
救援 例外 => e
  handle_command_Exception(span, e)
  提高 e
确保
  span&。完成
end