dd-trace 5.55.0 → 5.57.0

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.
Files changed (150) hide show
  1. package/LICENSE-3rdparty.csv +1 -0
  2. package/index.d.ts +44 -2
  3. package/init.js +4 -1
  4. package/package.json +24 -23
  5. package/packages/datadog-core/src/utils/src/set.js +8 -10
  6. package/packages/datadog-esbuild/index.js +22 -0
  7. package/packages/datadog-instrumentations/src/cassandra-driver.js +43 -60
  8. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +12 -12
  9. package/packages/datadog-instrumentations/src/cucumber.js +4 -6
  10. package/packages/datadog-instrumentations/src/elasticsearch.js +16 -19
  11. package/packages/datadog-instrumentations/src/fastify.js +91 -9
  12. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +20 -5
  13. package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +2 -2
  14. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  15. package/packages/datadog-instrumentations/src/helpers/register.js +17 -5
  16. package/packages/datadog-instrumentations/src/ioredis.js +8 -13
  17. package/packages/datadog-instrumentations/src/iovalkey.js +10 -14
  18. package/packages/datadog-instrumentations/src/jest.js +423 -325
  19. package/packages/datadog-instrumentations/src/memcached.js +17 -24
  20. package/packages/datadog-instrumentations/src/mocha/main.js +7 -6
  21. package/packages/datadog-instrumentations/src/moleculer/client.js +9 -10
  22. package/packages/datadog-instrumentations/src/moleculer/server.js +12 -13
  23. package/packages/datadog-instrumentations/src/openai.js +30 -2
  24. package/packages/datadog-instrumentations/src/playwright.js +4 -1
  25. package/packages/datadog-instrumentations/src/prisma.js +116 -0
  26. package/packages/datadog-instrumentations/src/redis.js +32 -43
  27. package/packages/datadog-instrumentations/src/router.js +1 -1
  28. package/packages/datadog-instrumentations/src/sharedb.js +10 -16
  29. package/packages/datadog-instrumentations/src/vitest.js +4 -4
  30. package/packages/datadog-plugin-aws-sdk/src/base.js +6 -1
  31. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +9 -4
  32. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +3 -2
  33. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +2 -1
  34. package/packages/datadog-plugin-aws-sdk/src/util.js +2 -2
  35. package/packages/datadog-plugin-azure-functions/src/index.js +5 -4
  36. package/packages/datadog-plugin-bunyan/src/index.js +2 -2
  37. package/packages/datadog-plugin-cassandra-driver/src/index.js +6 -2
  38. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/batch-consumer.js +1 -1
  39. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/consumer.js +1 -1
  40. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
  41. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/producer.js +1 -1
  42. package/packages/datadog-plugin-cucumber/src/index.js +4 -2
  43. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +9 -5
  44. package/packages/datadog-plugin-elasticsearch/src/index.js +12 -4
  45. package/packages/datadog-plugin-http/src/client.js +1 -0
  46. package/packages/datadog-plugin-http/src/server.js +2 -1
  47. package/packages/datadog-plugin-http2/src/client.js +1 -0
  48. package/packages/datadog-plugin-http2/src/server.js +1 -0
  49. package/packages/datadog-plugin-jest/src/index.js +4 -3
  50. package/packages/datadog-plugin-memcached/src/index.js +6 -2
  51. package/packages/datadog-plugin-mocha/src/index.js +3 -2
  52. package/packages/datadog-plugin-moleculer/src/client.js +15 -9
  53. package/packages/datadog-plugin-moleculer/src/server.js +9 -5
  54. package/packages/datadog-plugin-next/src/index.js +2 -1
  55. package/packages/datadog-plugin-openai/src/tracing.js +127 -80
  56. package/packages/datadog-plugin-oracledb/src/index.js +2 -1
  57. package/packages/datadog-plugin-pino/src/index.js +2 -2
  58. package/packages/datadog-plugin-prisma/src/client.js +62 -0
  59. package/packages/datadog-plugin-prisma/src/engine.js +81 -0
  60. package/packages/datadog-plugin-prisma/src/index.js +22 -0
  61. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +1 -1
  62. package/packages/datadog-plugin-redis/src/index.js +9 -3
  63. package/packages/datadog-plugin-router/src/index.js +1 -0
  64. package/packages/datadog-plugin-sharedb/src/index.js +13 -5
  65. package/packages/datadog-plugin-winston/src/index.js +2 -2
  66. package/packages/dd-trace/src/appsec/channels.js +26 -21
  67. package/packages/dd-trace/src/appsec/iast/analyzers/sql-injection-analyzer.js +1 -1
  68. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +13 -20
  69. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
  70. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +44 -1
  71. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +2 -1
  72. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +7 -2
  73. package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +0 -1
  74. package/packages/dd-trace/src/appsec/index.js +28 -2
  75. package/packages/dd-trace/src/appsec/rasp/utils.js +0 -5
  76. package/packages/dd-trace/src/appsec/reporter.js +6 -4
  77. package/packages/dd-trace/src/baggage.js +2 -2
  78. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +3 -3
  79. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +1 -1
  80. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
  81. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
  82. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +2 -2
  83. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -6
  84. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -3
  85. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +3 -3
  86. package/packages/dd-trace/src/config.js +334 -312
  87. package/packages/dd-trace/src/constants.js +2 -1
  88. package/packages/dd-trace/src/crashtracking/crashtracker.js +12 -14
  89. package/packages/dd-trace/src/datastreams/context.js +1 -1
  90. package/packages/dd-trace/src/datastreams/processor.js +1 -1
  91. package/packages/dd-trace/src/datastreams/writer.js +3 -3
  92. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +6 -3
  93. package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
  94. package/packages/dd-trace/src/debugger/devtools_client/index.js +2 -3
  95. package/packages/dd-trace/src/debugger/devtools_client/send.js +5 -1
  96. package/packages/dd-trace/src/debugger/devtools_client/state.js +7 -4
  97. package/packages/dd-trace/src/debugger/devtools_client/status.js +5 -1
  98. package/packages/dd-trace/src/dogstatsd.js +3 -3
  99. package/packages/dd-trace/src/exporters/agent/index.js +10 -5
  100. package/packages/dd-trace/src/exporters/agent/writer.js +4 -2
  101. package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -2
  102. package/packages/dd-trace/src/exporters/log/index.js +1 -1
  103. package/packages/dd-trace/src/exporters/span-stats/writer.js +2 -2
  104. package/packages/dd-trace/src/guardrails/index.js +3 -1
  105. package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
  106. package/packages/dd-trace/src/llmobs/index.js +11 -5
  107. package/packages/dd-trace/src/llmobs/plugins/base.js +2 -2
  108. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +1 -1
  109. package/packages/dd-trace/src/llmobs/tagger.js +13 -13
  110. package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
  111. package/packages/dd-trace/src/llmobs/writers/spans.js +2 -2
  112. package/packages/dd-trace/src/opentelemetry/tracer.js +1 -1
  113. package/packages/dd-trace/src/opentracing/propagation/text_map.js +22 -28
  114. package/packages/dd-trace/src/opentracing/span.js +1 -0
  115. package/packages/dd-trace/src/plugin_manager.js +3 -3
  116. package/packages/dd-trace/src/plugins/cache.js +2 -2
  117. package/packages/dd-trace/src/plugins/ci_plugin.js +11 -7
  118. package/packages/dd-trace/src/plugins/database.js +3 -1
  119. package/packages/dd-trace/src/plugins/index.js +1 -0
  120. package/packages/dd-trace/src/plugins/log_plugin.js +5 -1
  121. package/packages/dd-trace/src/plugins/outbound.js +8 -6
  122. package/packages/dd-trace/src/plugins/structured_log_plugin.js +9 -0
  123. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  124. package/packages/dd-trace/src/plugins/util/ci.js +83 -30
  125. package/packages/dd-trace/src/plugins/util/git.js +1 -0
  126. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +3 -2
  127. package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -0
  128. package/packages/dd-trace/src/plugins/util/tags.js +4 -1
  129. package/packages/dd-trace/src/plugins/util/test.js +80 -10
  130. package/packages/dd-trace/src/plugins/util/web.js +1 -0
  131. package/packages/dd-trace/src/profiler.js +0 -2
  132. package/packages/dd-trace/src/profiling/exporter_cli.js +1 -3
  133. package/packages/dd-trace/src/profiling/profilers/events.js +10 -2
  134. package/packages/dd-trace/src/profiling/ssi-heuristics.js +18 -126
  135. package/packages/dd-trace/src/proxy.js +12 -27
  136. package/packages/dd-trace/src/runtime_metrics/index.js +1 -1
  137. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +14 -45
  138. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +2 -2
  139. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +4 -0
  140. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +2 -2
  141. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +4 -0
  142. package/packages/dd-trace/src/supported-configurations.json +13 -3
  143. package/packages/dd-trace/src/telemetry/telemetry.js +11 -4
  144. package/packages/dd-trace/src/tracer.js +11 -0
  145. package/packages/dd-trace/src/tracer_metadata.js +25 -0
  146. package/packages/dd-trace/src/util.js +11 -4
  147. package/version.js +3 -1
  148. package/packages/datadog-core/src/utils/src/get.js +0 -11
  149. package/packages/datadog-core/src/utils/src/has.js +0 -14
  150. package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +0 -30
@@ -43,10 +43,10 @@ function encodeValue (valueObject) {
43
43
  case 'B':
44
44
  return Buffer.isBuffer(value) ? value : Buffer.from(value)
45
45
  default:
46
- log.debug(`Found unknown type while trying to create DynamoDB span pointer: ${type}`)
46
+ log.debug('Found unknown type while trying to create DynamoDB span pointer:', type)
47
47
  }
48
48
  } catch (err) {
49
- log.debug(`Failed to encode value while trying to create DynamoDB span pointer: ${err.message}`)
49
+ log.debug('Failed to encode value while trying to create DynamoDB span pointer:', err.message)
50
50
  }
51
51
  }
52
52
 
@@ -19,14 +19,15 @@ class AzureFunctionsPlugin extends TracingPlugin {
19
19
  static get operation () { return 'invoke' }
20
20
  static get kind () { return 'server' }
21
21
  static get type () { return 'serverless' }
22
-
23
22
  static get prefix () { return 'tracing:datadog:azure:functions:invoke' }
24
23
 
25
24
  bindStart (ctx) {
26
- const { functionName, methodName } = ctx
25
+ const { functionName, methodName, httpRequest } = ctx
27
26
  const store = storage('legacy').getStore()
28
-
27
+ // httpRequest.headers is a map
28
+ const childOf = this._tracer.extract('http_headers', Object.fromEntries(httpRequest.headers))
29
29
  const span = this.startSpan(this.operationName(), {
30
+ childOf,
30
31
  service: this.serviceName(),
31
32
  type: 'serverless',
32
33
  meta: {
@@ -52,7 +53,7 @@ class AzureFunctionsPlugin extends TracingPlugin {
52
53
  const path = (new URL(httpRequest.url)).pathname
53
54
  const req = {
54
55
  method: httpRequest.method,
55
- headers: Object.fromEntries(httpRequest.headers.entries()),
56
+ headers: Object.fromEntries(httpRequest.headers),
56
57
  url: path
57
58
  }
58
59
 
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
- const LogPlugin = require('../../dd-trace/src/plugins/log_plugin')
3
+ const StructuredLogPlugin = require('../../dd-trace/src/plugins/structured_log_plugin')
4
4
 
5
- class BunyanPlugin extends LogPlugin {
5
+ class BunyanPlugin extends StructuredLogPlugin {
6
6
  static get id () {
7
7
  return 'bunyan'
8
8
  }
@@ -8,7 +8,9 @@ class CassandraDriverPlugin extends DatabasePlugin {
8
8
  static get system () { return 'cassandra' }
9
9
  static get peerServicePrecursors () { return [CASSANDRA_CONTACT_POINTS_KEY] }
10
10
 
11
- start ({ keyspace, query, contactPoints = {} }) {
11
+ bindStart (ctx) {
12
+ let { keyspace, query, contactPoints = {} } = ctx
13
+
12
14
  if (Array.isArray(query)) {
13
15
  query = combine(query)
14
16
  }
@@ -24,7 +26,9 @@ class CassandraDriverPlugin extends DatabasePlugin {
24
26
  'cassandra.keyspace': keyspace,
25
27
  [CASSANDRA_CONTACT_POINTS_KEY]: contactPoints.join(',') || null
26
28
  }
27
- })
29
+ }, ctx)
30
+
31
+ return ctx.currentStore
28
32
  }
29
33
  }
30
34
 
@@ -4,7 +4,7 @@ const KafkajsBatchConsumerPlugin = require('../../datadog-plugin-kafkajs/src/bat
4
4
 
5
5
  class ConfluentKafkaJsBatchConsumerPlugin extends KafkajsBatchConsumerPlugin {
6
6
  static get id () {
7
- return '@confluentinc/kafka-javascript'
7
+ return 'confluentinc-kafka-javascript'
8
8
  }
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ const KafkajsConsumerPlugin = require('../../datadog-plugin-kafkajs/src/consumer
4
4
 
5
5
  class ConfluentKafkaJsConsumerPlugin extends KafkajsConsumerPlugin {
6
6
  static get id () {
7
- return '@confluentinc/kafka-javascript'
7
+ return 'confluentinc-kafka-javascript'
8
8
  }
9
9
  }
10
10
 
@@ -6,7 +6,7 @@ const BatchConsumerPlugin = require('./batch-consumer')
6
6
  const KafkajsPlugin = require('../../datadog-plugin-kafkajs/src/index')
7
7
 
8
8
  class ConfluentKafkaJsPlugin extends KafkajsPlugin {
9
- static get id () { return '@confluentinc/kafka-javascript' }
9
+ static get id () { return 'confluentinc-kafka-javascript' }
10
10
  static get plugins () {
11
11
  return {
12
12
  producer: ProducerPlugin,
@@ -4,7 +4,7 @@ const KafkajsProducerPlugin = require('../../datadog-plugin-kafkajs/src/producer
4
4
 
5
5
  class ConfluentKafkaJsProducerPlugin extends KafkajsProducerPlugin {
6
6
  static get id () {
7
- return '@confluentinc/kafka-javascript'
7
+ return 'confluentinc-kafka-javascript'
8
8
  }
9
9
  }
10
10
 
@@ -184,7 +184,8 @@ class CucumberPlugin extends CiPlugin {
184
184
  [COMPONENT]: this.constructor.id,
185
185
  ...this.testEnvironmentMetadata,
186
186
  ...testSuiteMetadata
187
- }
187
+ },
188
+ integrationName: this.constructor.id
188
189
  })
189
190
  this.testSuiteSpanByPath[testSuitePath] = testSuiteSpan
190
191
 
@@ -295,7 +296,8 @@ class CucumberPlugin extends CiPlugin {
295
296
  [COMPONENT]: this.constructor.id,
296
297
  'cucumber.step': resource,
297
298
  [RESOURCE_NAME]: resource
298
- }
299
+ },
300
+ integrationName: this.constructor.id
299
301
  })
300
302
  ctx.parentStore = store
301
303
  ctx.currentStore = { ...store, span }
@@ -376,7 +376,8 @@ class CypressPlugin {
376
376
  [COMPONENT]: TEST_FRAMEWORK_NAME,
377
377
  ...this.testEnvironmentMetadata,
378
378
  ...testSuiteSpanMetadata
379
- }
379
+ },
380
+ integrationName: TEST_FRAMEWORK_NAME
380
381
  })
381
382
  }
382
383
 
@@ -443,7 +444,8 @@ class CypressPlugin {
443
444
  ...testSpanMetadata,
444
445
  ...this.testEnvironmentMetadata,
445
446
  ...testSuiteTags
446
- }
447
+ },
448
+ integrationName: TEST_FRAMEWORK_NAME
447
449
  })
448
450
  }
449
451
 
@@ -550,7 +552,7 @@ class CypressPlugin {
550
552
  [TEST_SESSION_NAME]: testSessionName
551
553
  }
552
554
  }
553
- const libraryCapabilitiesTags = getLibraryCapabilitiesTags(this.constructor.id)
555
+ const libraryCapabilitiesTags = getLibraryCapabilitiesTags(this.constructor.id, false, this.frameworkVersion)
554
556
  metadataTags.test = {
555
557
  ...metadataTags.test,
556
558
  ...libraryCapabilitiesTags
@@ -565,7 +567,8 @@ class CypressPlugin {
565
567
  [COMPONENT]: TEST_FRAMEWORK_NAME,
566
568
  ...this.testEnvironmentMetadata,
567
569
  ...testSessionSpanMetadata
568
- }
570
+ },
571
+ integrationName: TEST_FRAMEWORK_NAME
569
572
  })
570
573
  this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'session')
571
574
 
@@ -575,7 +578,8 @@ class CypressPlugin {
575
578
  [COMPONENT]: TEST_FRAMEWORK_NAME,
576
579
  ...this.testEnvironmentMetadata,
577
580
  ...testModuleSpanMetadata
578
- }
581
+ },
582
+ integrationName: TEST_FRAMEWORK_NAME
579
583
  })
580
584
  this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'module')
581
585
 
@@ -5,7 +5,9 @@ const DatabasePlugin = require('../../dd-trace/src/plugins/database')
5
5
  class ElasticsearchPlugin extends DatabasePlugin {
6
6
  static get id () { return 'elasticsearch' }
7
7
 
8
- start ({ params }) {
8
+ bindStart (ctx) {
9
+ const { params } = ctx
10
+
9
11
  const body = getBody(params.body || params.bulkBody)
10
12
 
11
13
  this.startSpan(this.operationName(), {
@@ -20,13 +22,19 @@ class ElasticsearchPlugin extends DatabasePlugin {
20
22
  [`${this.system}.body`]: body,
21
23
  [`${this.system}.params`]: JSON.stringify(params.querystring || params.query)
22
24
  }
23
- })
25
+ }, ctx)
26
+
27
+ return ctx.currentStore
24
28
  }
25
29
 
26
- finish ({ params }) {
30
+ bindFinish (ctx) {
31
+ const { params } = ctx
32
+
27
33
  const span = this.activeSpan
28
34
  this.config.hooks.query(span, params)
29
- super.finish({ params })
35
+ super.finish(ctx)
36
+
37
+ return ctx.parentStore
30
38
  }
31
39
  }
32
40
 
@@ -38,6 +38,7 @@ class HttpClientPlugin extends ClientPlugin {
38
38
  // TODO delegate to super.startspan
39
39
  const span = this.startSpan(this.operationName(), {
40
40
  childOf,
41
+ integrationName: this.constructor.id,
41
42
  meta: {
42
43
  [COMPONENT]: this.constructor.id,
43
44
  'span.kind': 'client',
@@ -27,13 +27,14 @@ class HttpServerPlugin extends ServerPlugin {
27
27
  this.tracer,
28
28
  {
29
29
  ...this.config,
30
- service: this.config.service || this.serviceName()
30
+ service: this.config.service || this.serviceName(),
31
31
  },
32
32
  req,
33
33
  res,
34
34
  this.operationName()
35
35
  )
36
36
  span.setTag(COMPONENT, this.constructor.id)
37
+ span._integrationName = this.constructor.id
37
38
 
38
39
  this._parentStore = store
39
40
  this.enter(span, { ...store, req, res })
@@ -40,6 +40,7 @@ class Http2ClientPlugin extends ClientPlugin {
40
40
  const childOf = store && allowed ? store.span : null
41
41
  const span = this.startSpan(this.operationName(), {
42
42
  childOf,
43
+ integrationName: this.constructor.id,
43
44
  meta: {
44
45
  [COMPONENT]: this.constructor.id,
45
46
  [SPAN_KIND]: CLIENT,
@@ -30,6 +30,7 @@ class Http2ServerPlugin extends ServerPlugin {
30
30
  )
31
31
 
32
32
  span.setTag(COMPONENT, this.constructor.id)
33
+ span._integrationName = this.constructor.id
33
34
 
34
35
  this.enter(span, { ...store, req, res })
35
36
 
@@ -252,7 +252,8 @@ class JestPlugin extends CiPlugin {
252
252
  [COMPONENT]: this.constructor.id,
253
253
  ...this.testEnvironmentMetadata,
254
254
  ...testSuiteMetadata
255
- }
255
+ },
256
+ integrationName: this.constructor.id
256
257
  })
257
258
  this.telemetry.ciVisEvent(TELEMETRY_EVENT_CREATED, 'suite')
258
259
  if (_ddTestCodeCoverageEnabled) {
@@ -318,11 +319,11 @@ class JestPlugin extends CiPlugin {
318
319
  * because this subscription happens in a different process from the one
319
320
  * fetching the ITR config.
320
321
  */
321
- this.addSub('ci:jest:test-suite:code-coverage', ({ coverageFiles, testSuite }) => {
322
+ this.addSub('ci:jest:test-suite:code-coverage', ({ coverageFiles, testSuite, mockedFiles }) => {
322
323
  if (!coverageFiles.length) {
323
324
  this.telemetry.count(TELEMETRY_CODE_COVERAGE_EMPTY)
324
325
  }
325
- const files = [...coverageFiles, testSuite]
326
+ const files = [...coverageFiles, ...mockedFiles, testSuite]
326
327
 
327
328
  const { _traceId, _spanId } = this.testSuiteSpan.context()
328
329
  const formattedCoverage = {
@@ -6,7 +6,9 @@ const CachePlugin = require('../../dd-trace/src/plugins/cache')
6
6
  class MemcachedPlugin extends CachePlugin {
7
7
  static get id () { return 'memcached' }
8
8
 
9
- start ({ client, server, query }) {
9
+ bindStart (ctx) {
10
+ const { client, server, query } = ctx
11
+
10
12
  const address = getAddress(client, server, query)
11
13
 
12
14
  const meta = {
@@ -23,7 +25,9 @@ class MemcachedPlugin extends CachePlugin {
23
25
  resource: query.type,
24
26
  type: 'memcached',
25
27
  meta
26
- })
28
+ }, ctx)
29
+
30
+ return ctx.currentStore
27
31
  }
28
32
  }
29
33
 
@@ -152,7 +152,8 @@ class MochaPlugin extends CiPlugin {
152
152
  [COMPONENT]: this.constructor.id,
153
153
  ...this.testEnvironmentMetadata,
154
154
  ...testSuiteMetadata
155
- }
155
+ },
156
+ integrationName: this.constructor.id
156
157
  })
157
158
  this.telemetry.ciVisEvent(TELEMETRY_EVENT_CREATED, 'suite')
158
159
  if (this.libraryConfig?.isCodeCoverageEnabled) {
@@ -450,7 +451,7 @@ class MochaPlugin extends CiPlugin {
450
451
  const testSuite = span.meta[TEST_SUITE]
451
452
  const testSuiteSpan = this._testSuites.get(testSuite)
452
453
  if (!testSuiteSpan) {
453
- log.warn(`Test suite span not found for test span with test suite ${testSuite}`)
454
+ log.warn('Test suite span not found for test span with test suite', testSuite)
454
455
  return formattedSpan
455
456
  }
456
457
  const suiteTags = getTestSuiteLevelVisibilityTags(testSuiteSpan)
@@ -7,29 +7,35 @@ class MoleculerClientPlugin extends ClientPlugin {
7
7
  static get id () { return 'moleculer' }
8
8
  static get operation () { return 'call' }
9
9
 
10
- start ({ actionName, opts }) {
10
+ bindStart (ctx) {
11
+ const { actionName, opts } = ctx
12
+
11
13
  const span = this.startSpan(this.operationName(), {
12
14
  service: this.config.service || this.serviceName(),
13
15
  resource: actionName,
14
16
  kind: 'client'
15
- })
17
+ }, ctx)
16
18
 
17
19
  this.tracer.inject(span, 'text_map', opts.meta)
20
+
21
+ return ctx.currentStore
18
22
  }
19
23
 
20
- finish ({ broker, ctx }) {
21
- const span = this.activeSpan
24
+ finish (ctx) {
25
+ const { promiseCtx, broker } = ctx
26
+
27
+ const span = ctx.currentStore.span || this.activeSpan
22
28
 
23
- if (ctx) {
24
- const endpoint = ctx.endpoint || {}
29
+ if (promiseCtx) {
30
+ const endpoint = promiseCtx.endpoint || {}
25
31
  const node = endpoint.node || {}
26
32
 
27
- this.addHost(node.hostname, node.port)
33
+ this.addHost({ hostname: node.hostname, port: node.port })
28
34
 
29
- span.addTags(moleculerTags(broker, ctx, this.config))
35
+ span.addTags(moleculerTags(broker, promiseCtx, this.config))
30
36
  }
31
37
 
32
- super.finish()
38
+ super.finish(ctx)
33
39
  }
34
40
  }
35
41
 
@@ -7,19 +7,23 @@ class MoleculerServerPlugin extends ServerPlugin {
7
7
  static get id () { return 'moleculer' }
8
8
  static get operation () { return 'action' }
9
9
 
10
- start ({ action, ctx, broker }) {
11
- const followsFrom = this.tracer.extract('text_map', ctx.meta)
10
+ bindStart (ctx) {
11
+ const { action, middlewareCtx, broker } = ctx
12
+
13
+ const followsFrom = this.tracer.extract('text_map', middlewareCtx.meta)
12
14
  this.startSpan(this.operationName(), {
13
- childOf: followsFrom || this.activeSpan,
15
+ childOf: followsFrom || ctx?.currentStore?.span || this.activeSpan,
14
16
  service: this.config.service || this.serviceName(),
15
17
  resource: action.name,
16
18
  kind: 'server',
17
19
  type: 'web',
18
20
  meta: {
19
21
  'resource.name': action.name,
20
- ...moleculerTags(broker, ctx, this.config)
22
+ ...moleculerTags(broker, middlewareCtx, this.config)
21
23
  }
22
- })
24
+ }, ctx)
25
+
26
+ return ctx.currentStore
23
27
  }
24
28
  }
25
29
 
@@ -31,7 +31,8 @@ class NextPlugin extends ServerPlugin {
31
31
  'span.type': 'web',
32
32
  'span.kind': 'server',
33
33
  'http.method': req.method
34
- }
34
+ },
35
+ integrationName: this.constructor.id
35
36
  })
36
37
 
37
38
  analyticsSampler.sample(span, this.config.measured, true)