cw-datadog 2.23.0.6 → 2.23.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 357524fd08da065c567250e3808034acf9f913a3646454e08e57ba862b86630e
4
- data.tar.gz: 1f2e9dd6587bcf9e85dd392292ae7d3383aa0049e6c47564068e3fc2be47ec98
3
+ metadata.gz: 767d32bfe21955c161a202aa6f76f7664bb2ac5fb7360a07838772c2bc3cdbc3
4
+ data.tar.gz: b72a9c5a95d19c01d2b94d751e7fec196d0750383e5dca4c4d3985c20f25323d
5
5
  SHA512:
6
- metadata.gz: e5d5e968b104db74f788b813ca07ea400169235353094b1d6376ff9b0d1d54eb45f6fe66cedca3d8e80e7edea1e51626e2e17ddd6ff173756781a7e601f74f2a
7
- data.tar.gz: 7446cff8ed80819860f272d20a28bc5629e656ddc029951b177f391b833d1c0b717f64b8ac01baf38da84eed9ad1a9f24736f80fc914c0e1db96186f657c122b
6
+ metadata.gz: 40a7be0754bd238dbc77b1817eee6ba0fecac7f896382d23f7cc6e3c0ba79fa90c0cc303a1f0bc538fbf798db16fbff2f24485cd2bf865cf9dd5808a9085b8cd
7
+ data.tar.gz: 5999b9758ab07a66bca413a01c89d842aceed792accbc2934e5cff9c8646a0cb24b579d630e8d0d92f4d1014b295a207065db174fda75231e1afe97ee31d4e76
@@ -158,7 +158,7 @@ module Datadog
158
158
  Cloudwise.log_debug { 'Starting Application registration worker (3 min interval)...' }
159
159
  @app_registration_worker.start
160
160
 
161
- # Start License Worker
161
+ # Start License Worker (only in traditional mode)
162
162
  Cloudwise.log_debug { 'Starting License verification worker (5 min interval)...' }
163
163
  @license_worker.start
164
164
  end
@@ -193,7 +193,6 @@ module Datadog
193
193
  @docc_heartbeat_worker&.stop(true)
194
194
  @docc_registration_worker&.stop(true)
195
195
  @docc_operation_worker&.stop(true)
196
- @license_worker&.stop(true)
197
196
  Cloudwise.log_debug { 'Cloudwise DOCC component stopped' }
198
197
  else
199
198
  @host_id_worker&.stop(true)
@@ -233,8 +232,8 @@ module Datadog
233
232
  can_collect_data: probe_status[:can_collect_data],
234
233
  probe_active: probe_state.active?,
235
234
  probe_suspended: probe_state.suspended?,
236
- license_valid: probe_status[:license_valid],
237
- license_running: license_worker&.running?,
235
+ license_valid: @client.use_integrated_mode? ? true : probe_status[:license_valid],
236
+ license_running: @client.use_integrated_mode? ? false : license_worker&.running?,
238
237
  time_sync_enabled: time_sync_status[:enabled],
239
238
  time_sync_offset_ms: time_sync_status[:offset_ms],
240
239
  time_sync_running: time_sync_worker&.running?
@@ -329,15 +328,7 @@ module Datadog
329
328
  probe_state: probe_state
330
329
  )
331
330
 
332
- # 4. License Worker (5 min interval) - License 校验逻辑保持不变
333
- @license_worker = LicenseWorker.new(
334
- client: client,
335
- logger: logger,
336
- probe_state: probe_state,
337
- interval: settings.cloudwise.license_check_interval
338
- )
339
-
340
- # 5. Time Sync Worker (3 min interval, depends on License)
331
+ # 4. Time Sync Worker (3 min interval)
341
332
  @time_sync_worker = TimeSyncWorker.new(
342
333
  client: client,
343
334
  logger: logger,
@@ -421,13 +412,12 @@ module Datadog
421
412
  end
422
413
 
423
414
  # Start DOCC workers in background
424
- # DOCC 模式启动流程:
415
+ # DOCC 模式启动流程(不需要 License 校验):
425
416
  # 1. 启动 DOCC 心跳 worker
426
417
  # 2. 等待第一次心跳成功
427
418
  # 3. 启动 DOCC 注册 worker
428
- # 4. 启动 License worker
429
- # 5. 启动 Time Sync worker (3 min interval)
430
- # 6. 启动 DOCC 操作 worker
419
+ # 4. 启动 Time Sync worker (3 min interval)
420
+ # 5. 启动 DOCC 操作 worker
431
421
  def start_docc_workers_when_ready
432
422
  Thread.new do
433
423
  Thread.current.name = 'Cloudwise-DOCC-Initializer'
@@ -451,24 +441,13 @@ module Datadog
451
441
  @docc_registration_worker.start
452
442
 
453
443
  # ============================================================
454
- # STEP 3: Start License worker
455
- # ============================================================
456
- Cloudwise.log_debug { 'Cloudwise docc: Starting license worker...' }
457
- @license_worker.start
458
-
459
- # Wait for first successful license validation
460
- until probe_state.license_valid?
461
- sleep(1)
462
- end
463
-
464
- # ============================================================
465
- # STEP 4: Start Time Sync worker (3 min interval)
444
+ # STEP 3: Start Time Sync worker (3 min interval)
466
445
  # ============================================================
467
446
  Cloudwise.log_debug { 'Cloudwise docc: Starting Time Sync worker (3 min interval)...' }
468
447
  @time_sync_worker.start
469
448
 
470
449
  # ============================================================
471
- # STEP 5: Start DOCC Operation worker
450
+ # STEP 4: Start DOCC Operation worker
472
451
  # ============================================================
473
452
  Cloudwise.log_debug { 'Cloudwise docc: Starting operation worker...' }
474
453
  @docc_operation_worker.start
@@ -13,7 +13,7 @@ module Datadog
13
13
  # 初始状态:所有条件都未满足,探针不活跃
14
14
  @host_id_ready = false # Host ID 是否已生成
15
15
  @heartbeat_active = false # 心跳是否正常
16
- @license_valid = false # License 是否校验通过
16
+ @license_valid = false # License 是否校验通过(仅传统模式使用,DOCC 模式忽略)
17
17
  @app_registered = false # 应用是否已注册(注册失败不影响采集)
18
18
 
19
19
  # 融合模式状态
@@ -61,7 +61,7 @@ module Datadog
61
61
  end
62
62
  end
63
63
 
64
- # License 相关
64
+ # License 相关(仅传统模式使用,DOCC 模式下不需要 License 校验)
65
65
  def mark_license_valid!
66
66
  @mutex.synchronize do
67
67
  return if @license_valid
@@ -163,12 +163,12 @@ module Datadog
163
163
  end
164
164
 
165
165
  # 探针是否可以采集数据
166
- # 如果使用 DOCC 模式:需要 DOCC 心跳 + License + Operation 都正常
166
+ # 如果使用 DOCC 模式:需要 DOCC 心跳 + Operation 都正常(不需要 License)
167
167
  # 如果使用传统模式:需要 Host ID + 心跳 + License 都正常
168
168
  def can_collect_data?
169
169
  @mutex.synchronize do
170
170
  if @use_docc_mode
171
- @docc_heartbeat_active && @license_valid && @docc_operation_active
171
+ @docc_heartbeat_active && @docc_operation_active
172
172
  else
173
173
  @host_id_ready && @heartbeat_active && @license_valid
174
174
  end
@@ -233,7 +233,7 @@ module Datadog
233
233
  docc_registered: @docc_registered,
234
234
  docc_heartbeat_active: @docc_heartbeat_active,
235
235
  docc_operation_active: @docc_operation_active,
236
- can_collect_data: @docc_heartbeat_active && @license_valid && @docc_operation_active
236
+ can_collect_data: @docc_heartbeat_active && @docc_operation_active
237
237
  )
238
238
  else
239
239
  base_status.merge(
@@ -252,12 +252,11 @@ module Datadog
252
252
  # 直接读取实例变量,避免递归锁定(不调用 can_collect_data? 方法)
253
253
  if @use_docc_mode
254
254
  # DOCC 模式状态日志
255
- if @docc_heartbeat_active && @license_valid && @docc_operation_active
255
+ if @docc_heartbeat_active && @docc_operation_active
256
256
  Cloudwise.log_debug { 'Cloudwise DOCC: Probe ACTIVE - data collection enabled' }
257
257
  else
258
258
  reasons = []
259
259
  reasons << 'DOCC Heartbeat inactive' unless @docc_heartbeat_active
260
- reasons << 'License invalid' unless @license_valid
261
260
  reasons << 'Agent stopped by operation' unless @docc_operation_active
262
261
 
263
262
  Cloudwise.log_debug { "Cloudwise DOCC: Probe SUSPENDED - data collection disabled (#{reasons.join(", ")})" }
@@ -128,8 +128,9 @@ module Datadog
128
128
  end
129
129
 
130
130
  def perform
131
- # 只有在 License 校验通过后才执行时间同步
132
- unless probe_state.license_valid?
131
+ # 传统模式下,只有在 License 校验通过后才执行时间同步
132
+ # DOCC 模式下不需要 License 校验
133
+ unless probe_state.using_docc_mode? || probe_state.license_valid?
133
134
  Cloudwise.log_debug { 'Cloudwise: Waiting for license validation before time sync' }
134
135
  return true
135
136
  end
@@ -1071,7 +1071,7 @@ module Datadog
1071
1071
  o.default 30
1072
1072
  end
1073
1073
 
1074
- # License check interval in seconds (5 minutes)
1074
+ # License check interval in seconds (5 minutes, 仅传统模式使用,DOCC 模式不需要 License 校验)
1075
1075
  # @default `DD_CLOUDWISE_LICENSE_CHECK_INTERVAL` environment variable, otherwise `300`
1076
1076
  # @return [Integer]
1077
1077
  option :license_check_interval do |o|
@@ -91,8 +91,15 @@ module Datadog
91
91
  host_id = get_host_id
92
92
  app_id = generate_app_id(service_name)
93
93
  instance_id = get_instance_id
94
- # 使用低 64 trace_id,与上报保持一致
95
- trace_id = Tracing::Utils::TraceId.to_low_order(trace.id).to_s
94
+ # 如果上游传递了 trace_id_from(例如 Java1 -> Ruby -> Java2),
95
+ # 则使用上游的 trace_id_from 作为透传的 trace_id,保持端到端追踪链路一致
96
+ # 否则使用本服务的低 64 位 trace_id
97
+ upstream_trace_id = trace.get_tag('trace_id_from')
98
+ trace_id = if upstream_trace_id && !upstream_trace_id.empty? && upstream_trace_id != '-1'
99
+ upstream_trace_id
100
+ else
101
+ Tracing::Utils::TraceId.to_low_order(trace.id).to_s
102
+ end
96
103
  assumed_app_id = generate_assumed_app_id(target_url)
97
104
  span_id = span.id.to_s
98
105
  segment_id = get_segment_id(span)
@@ -5,7 +5,7 @@ module Datadog
5
5
  MAJOR = 2
6
6
  MINOR = 23
7
7
  PATCH = 0
8
- PATCH_MINOR = 6
8
+ PATCH_MINOR = 7
9
9
  PRE = nil
10
10
  BUILD = nil
11
11
  # PRE and BUILD above are modified for dev gems during gem build GHA workflow
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cw-datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.23.0.6
4
+ version: 2.23.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-18 00:00:00.000000000 Z
11
+ date: 2026-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -1095,8 +1095,8 @@ licenses:
1095
1095
  - Apache-2.0
1096
1096
  metadata:
1097
1097
  allowed_push_host: https://rubygems.org
1098
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.23.0.6/CHANGELOG.md
1099
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.23.0.6
1098
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.23.0.7/CHANGELOG.md
1099
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.23.0.7
1100
1100
  post_install_message:
1101
1101
  rdoc_options: []
1102
1102
  require_paths: