dd-trace 6.17.0 → 6.18.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.
- package/index.d.ts +52 -9
- package/package.json +1 -1
- package/packages/datadog-instrumentations/src/cucumber.js +10 -5
- package/packages/datadog-instrumentations/src/cypress-config.js +27 -15
- package/packages/datadog-instrumentations/src/helpers/bundler-register.js +6 -0
- package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +2 -1
- package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -6
- package/packages/datadog-instrumentations/src/helpers/register.js +20 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +41 -4
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentation-registry.js +15 -13
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/playwright.js +43 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +13 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/targets.js +28 -3
- package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +4 -0
- package/packages/datadog-instrumentations/src/jest.js +27 -3
- package/packages/datadog-instrumentations/src/mocha/main.js +7 -5
- package/packages/datadog-instrumentations/src/mocha/utils.js +8 -8
- package/packages/datadog-instrumentations/src/playwright-reporter.js +3 -4
- package/packages/datadog-instrumentations/src/playwright.js +47 -6
- package/packages/datadog-instrumentations/src/undici.js +7 -3
- package/packages/datadog-instrumentations/src/vitest-main.js +91 -20
- package/packages/datadog-instrumentations/src/webdriverio.js +28 -12
- package/packages/datadog-instrumentations/src/ws.js +41 -1
- package/packages/datadog-plugin-cucumber/src/index.js +3 -4
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +44 -14
- package/packages/datadog-plugin-cypress/src/index.js +3 -1
- package/packages/datadog-plugin-jest/src/index.js +3 -4
- package/packages/datadog-plugin-mocha/src/index.js +3 -4
- package/packages/datadog-plugin-playwright/src/index.js +11 -6
- package/packages/datadog-plugin-vitest/src/index.js +3 -4
- package/packages/datadog-plugin-ws/src/producer.js +1 -1
- package/packages/datadog-shimmer/src/shimmer.js +14 -10
- package/packages/datadog-turbopack/index.js +4 -1
- package/packages/datadog-turbopack/src/loader.js +6 -2
- package/packages/dd-trace/src/agent/info.js +5 -4
- package/packages/dd-trace/src/config/generated-config-types.d.ts +15 -15
- package/packages/dd-trace/src/config/index.js +7 -6
- package/packages/dd-trace/src/config/supported-configurations.json +11 -0
- package/packages/dd-trace/src/debugger/devtools_client/config.js +2 -1
- package/packages/dd-trace/src/debugger/devtools_client/send.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +5 -3
- package/packages/dd-trace/src/debugger/devtools_client/status.js +1 -1
- package/packages/dd-trace/src/debugger/index.js +1 -1
- package/packages/dd-trace/src/evp_proxy/constants.js +2 -0
- package/packages/dd-trace/src/evp_proxy/direct.js +17 -13
- package/packages/dd-trace/src/evp_proxy/discovery.js +14 -10
- package/packages/dd-trace/src/evp_proxy/path.js +21 -7
- package/packages/dd-trace/src/exporters/common/url.js +33 -2
- package/packages/dd-trace/src/llmobs/prompts/manager.js +10 -2
- package/packages/dd-trace/src/llmobs/prompts/prompt.js +77 -11
- package/packages/dd-trace/src/llmobs/tagger.js +9 -4
- package/packages/dd-trace/src/openfeature/configuration_source.js +4 -1
- package/packages/dd-trace/src/openfeature/flagging_provider.js +3 -3
- package/packages/dd-trace/src/openfeature/index.js +6 -2
- package/packages/dd-trace/src/openfeature/writers/base.js +90 -17
- package/packages/dd-trace/src/openfeature/writers/exposures.js +4 -0
- package/packages/dd-trace/src/openfeature/writers/util.js +104 -33
- package/packages/dd-trace/src/opentracing/tracer.js +3 -3
- package/packages/dd-trace/src/plugin_manager.js +27 -8
- package/packages/dd-trace/src/plugins/ci_plugin.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +9 -4
- package/packages/dd-trace/src/proxy.js +2 -2
- package/packages/dd-trace/src/telemetry/send-data.js +2 -1
- package/packages/dd-trace/src/telemetry/telemetry.js +1 -1
- package/packages/dd-trace/src/tracer.js +5 -4
- package/packages/datadog-instrumentations/src/azure-cosmos.js +0 -7
- package/packages/datadog-instrumentations/src/bullmq.js +0 -11
- package/packages/datadog-instrumentations/src/langchain.js +0 -7
- package/packages/datadog-instrumentations/src/langgraph.js +0 -7
- package/packages/datadog-instrumentations/src/mercurius.js +0 -11
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
const {
|
|
4
4
|
EVP_EVENT_PLATFORM_SUBDOMAIN,
|
|
5
|
+
EVP_ORIGIN_HEADER_NAME,
|
|
6
|
+
EVP_ORIGIN_VERSION_HEADER_NAME,
|
|
5
7
|
EVP_PROXY_PATH_V2,
|
|
6
8
|
EVP_PROXY_PATH_V4,
|
|
7
9
|
EVP_SUBDOMAIN_HEADER_NAME,
|
|
@@ -10,6 +12,10 @@ const { createDirectEVPRoute } = require('../../evp_proxy/direct')
|
|
|
10
12
|
const { discoverEVPProxy } = require('../../evp_proxy/discovery')
|
|
11
13
|
const logger = require('../../log')
|
|
12
14
|
|
|
15
|
+
const ROUTE_DISCOVERY_COOLDOWN_MS = 60_000
|
|
16
|
+
const REQUIRED_LOCAL_HEADERS = [EVP_ORIGIN_HEADER_NAME, EVP_ORIGIN_VERSION_HEADER_NAME]
|
|
17
|
+
const STOP_NOOP = () => {}
|
|
18
|
+
|
|
13
19
|
let missingRouteWarningLogged = false
|
|
14
20
|
|
|
15
21
|
/**
|
|
@@ -26,7 +32,7 @@ function warnExposureDeliveryUnavailable () {
|
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
/**
|
|
29
|
-
* Preserves
|
|
35
|
+
* Preserves the one-time EVP v2 capability check for the Remote Configuration source.
|
|
30
36
|
*
|
|
31
37
|
* @param {import('../../config')} config - Tracer configuration object
|
|
32
38
|
* @param {Function} setWriterEnabledValue - Callback to set the writer enabled state
|
|
@@ -49,6 +55,7 @@ function setAgentStrategy (config, setWriterEnabledValue) {
|
|
|
49
55
|
setWriterEnabledValue(false)
|
|
50
56
|
}
|
|
51
57
|
})
|
|
58
|
+
return STOP_NOOP
|
|
52
59
|
}
|
|
53
60
|
|
|
54
61
|
/**
|
|
@@ -62,54 +69,118 @@ function setAgentStrategy (config, setWriterEnabledValue) {
|
|
|
62
69
|
*/
|
|
63
70
|
function setAgentlessStrategy (config, setWriterEnabledValue) {
|
|
64
71
|
const directRoute = createDirectEVPRoute(config, EVP_EVENT_PLATFORM_SUBDOMAIN)
|
|
72
|
+
let discovering = false
|
|
73
|
+
let recoveryTimer
|
|
74
|
+
let state = 'unknown'
|
|
75
|
+
let stopped = false
|
|
65
76
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
const stop = () => {
|
|
78
|
+
stopped = true
|
|
79
|
+
clearTimeout(recoveryTimer)
|
|
80
|
+
recoveryTimer = undefined
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const scheduleRecovery = () => {
|
|
84
|
+
if (stopped || state !== 'unavailable' || recoveryTimer !== undefined) return
|
|
85
|
+
|
|
86
|
+
recoveryTimer = setTimeout(discover, ROUTE_DISCOVERY_COOLDOWN_MS)
|
|
87
|
+
recoveryTimer.unref?.()
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const markUnavailable = () => {
|
|
91
|
+
if (stopped || state === 'direct') return
|
|
92
|
+
if (state !== 'unavailable') {
|
|
93
|
+
state = 'unavailable'
|
|
94
|
+
setWriterEnabledValue(false)
|
|
80
95
|
}
|
|
96
|
+
scheduleRecovery()
|
|
97
|
+
}
|
|
81
98
|
|
|
99
|
+
const activateDirect = () => {
|
|
100
|
+
if (stopped || state === 'direct' || directRoute === undefined) return
|
|
101
|
+
state = 'direct'
|
|
102
|
+
clearTimeout(recoveryTimer)
|
|
103
|
+
recoveryTimer = undefined
|
|
104
|
+
setWriterEnabledValue(true, directRoute)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @param {{url: URL, basePath: string}} localRoute - Discovered local route
|
|
109
|
+
*/
|
|
110
|
+
const activateLocal = localRoute => {
|
|
111
|
+
state = 'local'
|
|
112
|
+
const route = {
|
|
113
|
+
...localRoute,
|
|
114
|
+
headers: {
|
|
115
|
+
[EVP_SUBDOMAIN_HEADER_NAME]: EVP_EVENT_PLATFORM_SUBDOMAIN,
|
|
116
|
+
},
|
|
117
|
+
}
|
|
82
118
|
if (directRoute) {
|
|
119
|
+
route.fallback = directRoute
|
|
120
|
+
route.onFallback = activateDirect
|
|
121
|
+
} else {
|
|
122
|
+
route.onUnavailable = markUnavailable
|
|
123
|
+
}
|
|
124
|
+
logger.debug('FFE Writer enabled with local EVP route %s', route.basePath)
|
|
125
|
+
setWriterEnabledValue(true, route)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function discover () {
|
|
129
|
+
recoveryTimer = undefined
|
|
130
|
+
if (stopped || state === 'direct' || discovering) return
|
|
131
|
+
discovering = true
|
|
132
|
+
|
|
133
|
+
discoverEVPProxy(config.url, {
|
|
134
|
+
requiredHeaders: REQUIRED_LOCAL_HEADERS,
|
|
135
|
+
supportedPaths: [EVP_PROXY_PATH_V4, EVP_PROXY_PATH_V2],
|
|
136
|
+
// Agentless owns fallback and unavailable-state recovery; do not delay them with HTTP retries.
|
|
137
|
+
retry: false,
|
|
138
|
+
}, (error, localRoute) => {
|
|
139
|
+
discovering = false
|
|
140
|
+
if (stopped || state === 'direct') return
|
|
141
|
+
|
|
142
|
+
if (localRoute) {
|
|
143
|
+
activateLocal(localRoute)
|
|
144
|
+
return
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (directRoute) {
|
|
148
|
+
if (error) {
|
|
149
|
+
logger.debug('FFE Writer using direct EVP intake after local discovery failed: %s', error.message)
|
|
150
|
+
} else {
|
|
151
|
+
logger.debug('FFE Writer using direct EVP intake because no compatible local route was advertised')
|
|
152
|
+
}
|
|
153
|
+
activateDirect()
|
|
154
|
+
return
|
|
155
|
+
}
|
|
156
|
+
|
|
83
157
|
if (error) {
|
|
84
|
-
logger.debug('FFE Writer
|
|
85
|
-
} else {
|
|
86
|
-
logger.debug('FFE Writer using direct EVP intake because no compatible local route was advertised')
|
|
158
|
+
logger.debug('FFE Writer disabled - error getting local receiver info: %s', error.message)
|
|
87
159
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
160
|
+
warnExposureDeliveryUnavailable()
|
|
161
|
+
markUnavailable()
|
|
162
|
+
})
|
|
163
|
+
}
|
|
91
164
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
warnExposureDeliveryUnavailable()
|
|
96
|
-
setWriterEnabledValue(false)
|
|
97
|
-
})
|
|
165
|
+
discover()
|
|
166
|
+
return stop
|
|
98
167
|
}
|
|
99
168
|
|
|
100
169
|
/**
|
|
101
|
-
* Applies
|
|
170
|
+
* Applies one event-delivery strategy that can be shared by all Feature Flags writers.
|
|
102
171
|
*
|
|
103
172
|
* @param {import('../../config')} config - Tracer configuration object
|
|
104
173
|
* @param {Function} setWriterEnabledValue - Callback to set the writer enabled state
|
|
105
174
|
*/
|
|
106
|
-
function
|
|
175
|
+
function setEventDeliveryStrategy (config, setWriterEnabledValue) {
|
|
107
176
|
if (config.featureFlags?.DD_FEATURE_FLAGS_CONFIGURATION_SOURCE === 'agentless') {
|
|
108
|
-
setAgentlessStrategy(config, setWriterEnabledValue)
|
|
109
|
-
return
|
|
177
|
+
return setAgentlessStrategy(config, setWriterEnabledValue)
|
|
110
178
|
}
|
|
111
179
|
|
|
112
|
-
setAgentStrategy(config, setWriterEnabledValue)
|
|
180
|
+
return setAgentStrategy(config, setWriterEnabledValue)
|
|
113
181
|
}
|
|
114
182
|
|
|
115
|
-
module.exports = {
|
|
183
|
+
module.exports = {
|
|
184
|
+
setEventDeliveryStrategy,
|
|
185
|
+
setExposureDeliveryStrategy: setEventDeliveryStrategy,
|
|
186
|
+
}
|
|
@@ -40,11 +40,11 @@ class DatadogTracer {
|
|
|
40
40
|
// spans must reach the Electron SDK's IPC bridge, not an OTLP endpoint,
|
|
41
41
|
// even when OTEL_* vars are set for unrelated telemetry.
|
|
42
42
|
if (config.OTEL_TRACES_EXPORTER === 'otlp' && !config.isCiVisibility &&
|
|
43
|
-
config.
|
|
43
|
+
config.tracing.DD_TRACE_EXPERIMENTAL_EXPORTER !== 'electron') {
|
|
44
44
|
const { createOtlpTraceExporter } = require('../opentelemetry/trace')
|
|
45
45
|
this._exporter = createOtlpTraceExporter(config)
|
|
46
46
|
} else {
|
|
47
|
-
const Exporter = getExporter(config.
|
|
47
|
+
const Exporter = getExporter(config.tracing.DD_TRACE_EXPERIMENTAL_EXPORTER)
|
|
48
48
|
this._exporter = new Exporter(config, this._prioritySampler)
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -55,7 +55,7 @@ class DatadogTracer {
|
|
|
55
55
|
}
|
|
56
56
|
this._processor = new SpanProcessor(this._exporter, this._prioritySampler, config, otlpStatsExporter)
|
|
57
57
|
this._url = this._exporter._url
|
|
58
|
-
this._enableGetRumData = config.
|
|
58
|
+
this._enableGetRumData = config.rum.DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED
|
|
59
59
|
this._traceId128BitGenerationEnabled = config.traceId128BitGenerationEnabled
|
|
60
60
|
this._propagators = {
|
|
61
61
|
[formats.TEXT_MAP]: new TextMapPropagator(config),
|
|
@@ -36,7 +36,11 @@ const pluginClasses = {}
|
|
|
36
36
|
// during instrumentation initialization (e.g. re-requires in bundler contexts)
|
|
37
37
|
// are captured and populate pluginClasses correctly.
|
|
38
38
|
loadChannel.subscribe(({ name }) => {
|
|
39
|
-
|
|
39
|
+
try {
|
|
40
|
+
maybeEnable(plugins[name])
|
|
41
|
+
} catch (error) {
|
|
42
|
+
log.error('Error activating plugin %s', name, error)
|
|
43
|
+
}
|
|
40
44
|
})
|
|
41
45
|
|
|
42
46
|
// instrument everything that needs Plugin System V2 instrumentation
|
|
@@ -81,11 +85,15 @@ module.exports = class PluginManager {
|
|
|
81
85
|
this._configsByName = {}
|
|
82
86
|
|
|
83
87
|
this._loadedSubscriber = ({ name }) => {
|
|
84
|
-
|
|
88
|
+
try {
|
|
89
|
+
const Plugin = plugins[name]
|
|
85
90
|
|
|
86
|
-
|
|
91
|
+
if (!Plugin || typeof Plugin !== 'function') return
|
|
87
92
|
|
|
88
|
-
|
|
93
|
+
this.loadPlugin(Plugin.id)
|
|
94
|
+
} catch (error) {
|
|
95
|
+
log.error('Error activating plugin %s', name, error)
|
|
96
|
+
}
|
|
89
97
|
}
|
|
90
98
|
|
|
91
99
|
loadChannel.subscribe(this._loadedSubscriber)
|
|
@@ -112,10 +120,21 @@ module.exports = class PluginManager {
|
|
|
112
120
|
}
|
|
113
121
|
|
|
114
122
|
// extracts predetermined configuration from tracer and combines it with plugin-specific config
|
|
115
|
-
|
|
123
|
+
const config = {
|
|
116
124
|
...this.#getSharedConfig(name),
|
|
117
125
|
...pluginConfig,
|
|
118
|
-
}
|
|
126
|
+
}
|
|
127
|
+
const plugin = this._pluginsByName[name]
|
|
128
|
+
try {
|
|
129
|
+
plugin.configure(config)
|
|
130
|
+
} catch (error) {
|
|
131
|
+
try {
|
|
132
|
+
plugin.configure({ enabled: false })
|
|
133
|
+
} catch (disableError) {
|
|
134
|
+
log.error('Error disabling plugin %s after failed activation', name, disableError)
|
|
135
|
+
}
|
|
136
|
+
throw error
|
|
137
|
+
}
|
|
119
138
|
}
|
|
120
139
|
|
|
121
140
|
// TODO: merge config instead of replacing
|
|
@@ -189,7 +208,7 @@ module.exports = class PluginManager {
|
|
|
189
208
|
traceWebsocketMessagesEnabled,
|
|
190
209
|
traceWebsocketMessagesInheritSampling,
|
|
191
210
|
traceWebsocketMessagesSeparateTraces,
|
|
192
|
-
|
|
211
|
+
tracing,
|
|
193
212
|
DD_TRACE_RESOURCE_RENAMING_ENABLED,
|
|
194
213
|
} = /** @type {import('./config/config-base')} */ (this._tracerConfig)
|
|
195
214
|
|
|
@@ -212,7 +231,7 @@ module.exports = class PluginManager {
|
|
|
212
231
|
traceWebsocketMessagesEnabled,
|
|
213
232
|
traceWebsocketMessagesInheritSampling,
|
|
214
233
|
traceWebsocketMessagesSeparateTraces,
|
|
215
|
-
|
|
234
|
+
tracing,
|
|
216
235
|
resourceRenamingEnabled: DD_TRACE_RESOURCE_RENAMING_ENABLED,
|
|
217
236
|
}
|
|
218
237
|
|
|
@@ -788,7 +788,7 @@ module.exports = class CiPlugin extends Plugin {
|
|
|
788
788
|
return
|
|
789
789
|
}
|
|
790
790
|
|
|
791
|
-
const exporter = this.config.
|
|
791
|
+
const exporter = this.config.tracing.DD_TRACE_EXPERIMENTAL_EXPORTER
|
|
792
792
|
const workerTestFramework = WORKER_EXPORTER_TO_TEST_FRAMEWORK[exporter]
|
|
793
793
|
this.shouldSkipGitMetadataExtraction = workerTestFramework &&
|
|
794
794
|
TEST_FRAMEWORKS_TO_SKIP_GIT_METADATA_EXTRACTION.has(workerTestFramework)
|
|
@@ -881,14 +881,19 @@ function setRumTestTags (testSpan, isRumActive, browserVersion) {
|
|
|
881
881
|
}
|
|
882
882
|
|
|
883
883
|
/**
|
|
884
|
-
* Marks a successful test session that
|
|
884
|
+
* Marks a successful test session that did not execute any tests.
|
|
885
885
|
*
|
|
886
886
|
* @param {import('../../opentracing/span')} testSessionSpan
|
|
887
887
|
* @param {import('../../opentracing/span')|undefined} testModuleSpan
|
|
888
|
-
* @param {
|
|
889
|
-
* @param {string} emptyReason
|
|
888
|
+
* @param {'zero_tests'|'all_tests_skipped'|'zero_test_shard'|'test_discovery'} emptyReason
|
|
890
889
|
*/
|
|
891
|
-
function setExpectedEmptyTestSessionTags (testSessionSpan, testModuleSpan,
|
|
890
|
+
function setExpectedEmptyTestSessionTags (testSessionSpan, testModuleSpan, emptyReason) {
|
|
891
|
+
const skipReason = emptyReason === 'test_discovery'
|
|
892
|
+
? 'Test discovery only (--list)'
|
|
893
|
+
: emptyReason === 'zero_test_shard'
|
|
894
|
+
? 'No tests were assigned to this shard'
|
|
895
|
+
: emptyReason === 'all_tests_skipped' ? 'All tests were skipped' : 'No tests were detected'
|
|
896
|
+
|
|
892
897
|
for (const span of [testSessionSpan, testModuleSpan]) {
|
|
893
898
|
if (!span) continue
|
|
894
899
|
|
|
@@ -246,7 +246,7 @@ class Tracer extends NoopProxy {
|
|
|
246
246
|
appsecRemoteConfig.enable(rc, config, this._modules.appsec)
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
if (config.dynamicInstrumentation.
|
|
249
|
+
if (config.dynamicInstrumentation.DD_DYNAMIC_INSTRUMENTATION_ENABLED) {
|
|
250
250
|
getDynamicInstrumentation().start(config, rc)
|
|
251
251
|
}
|
|
252
252
|
|
|
@@ -463,7 +463,7 @@ class Tracer extends NoopProxy {
|
|
|
463
463
|
* @param {object} rc - The RemoteConfig instance
|
|
464
464
|
*/
|
|
465
465
|
#updateDebugger (config, rc) {
|
|
466
|
-
const shouldBeEnabled = config.dynamicInstrumentation.
|
|
466
|
+
const shouldBeEnabled = config.dynamicInstrumentation.DD_DYNAMIC_INSTRUMENTATION_ENABLED
|
|
467
467
|
if (!shouldBeEnabled && dynamicInstrumentation === undefined) return
|
|
468
468
|
|
|
469
469
|
const DynamicInstrumentation = getDynamicInstrumentation()
|
|
@@ -137,7 +137,8 @@ function sendData (config, application, host, reqType, payload = {}, cb = () =>
|
|
|
137
137
|
let url = config.url
|
|
138
138
|
|
|
139
139
|
const isCiVisibilityAgentlessMode = isCiVisibility && testOptimization.DD_CIVISIBILITY_AGENTLESS_ENABLED
|
|
140
|
-
const isApmTracingAgentlessMode =
|
|
140
|
+
const isApmTracingAgentlessMode =
|
|
141
|
+
config.tracing.DD_TRACE_EXPERIMENTAL_EXPORTER === 'agentless'
|
|
141
142
|
const isAgentlessMode = isCiVisibilityAgentlessMode || isApmTracingAgentlessMode
|
|
142
143
|
|
|
143
144
|
if (isCiVisibility && getTestOptimizationAgent === undefined) {
|
|
@@ -157,7 +157,7 @@ function getProducts (config) {
|
|
|
157
157
|
enabled: profilingEnabledToBoolean(config.profiling.DD_PROFILING_ENABLED),
|
|
158
158
|
},
|
|
159
159
|
dynamic_instrumentation: {
|
|
160
|
-
enabled: config.dynamicInstrumentation.
|
|
160
|
+
enabled: config.dynamicInstrumentation.DD_DYNAMIC_INSTRUMENTATION_ENABLED,
|
|
161
161
|
},
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -7,6 +7,7 @@ const {
|
|
|
7
7
|
flushFrameworkWarnings,
|
|
8
8
|
flushLoadOrderWarnings,
|
|
9
9
|
} = require('../../datadog-instrumentations/src/helpers/check-require-cache')
|
|
10
|
+
const shimmer = require('../../datadog-shimmer')
|
|
10
11
|
const Tracer = require('./opentracing/tracer')
|
|
11
12
|
const Scope = require('./scope')
|
|
12
13
|
const { isError } = require('./util')
|
|
@@ -119,7 +120,7 @@ class DatadogTracer extends Tracer {
|
|
|
119
120
|
wrap (name, options, fn) {
|
|
120
121
|
const tracer = this
|
|
121
122
|
|
|
122
|
-
return function (...args) {
|
|
123
|
+
return shimmer.wrapFunction(fn, original => function (...args) {
|
|
123
124
|
let optionsObj = options
|
|
124
125
|
if (typeof optionsObj === 'function' && typeof fn === 'function') {
|
|
125
126
|
optionsObj = optionsObj.apply(this, args)
|
|
@@ -136,11 +137,11 @@ class DatadogTracer extends Tracer {
|
|
|
136
137
|
return scopeBoundCb.apply(this, arguments)
|
|
137
138
|
}
|
|
138
139
|
|
|
139
|
-
return
|
|
140
|
+
return original.apply(this, args)
|
|
140
141
|
})
|
|
141
142
|
}
|
|
142
|
-
return tracer.trace(name, optionsObj, () =>
|
|
143
|
-
}
|
|
143
|
+
return tracer.trace(name, optionsObj, () => original.apply(this, args))
|
|
144
|
+
})
|
|
144
145
|
}
|
|
145
146
|
|
|
146
147
|
setUrl (url) {
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by dd-compile
|
|
2
|
-
// Orchestrion rewriter handles the actual instrumentation via JSON config.
|
|
3
|
-
// This file registers the module hooks for the rewriter to process.
|
|
4
|
-
|
|
5
|
-
'use strict'
|
|
6
|
-
|
|
7
|
-
const { addHook, getHooks } = require('./helpers/instrument')
|
|
8
|
-
|
|
9
|
-
for (const hook of getHooks('bullmq').values()) {
|
|
10
|
-
addHook(hook, exports => exports)
|
|
11
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by dd-compile
|
|
2
|
-
// Orchestrion rewriter handles the actual instrumentation via JSON config.
|
|
3
|
-
// This file registers the module hooks for the rewriter to process.
|
|
4
|
-
|
|
5
|
-
'use strict'
|
|
6
|
-
|
|
7
|
-
const { addHook, getHooks } = require('./helpers/instrument')
|
|
8
|
-
|
|
9
|
-
for (const hook of getHooks('mercurius').values()) {
|
|
10
|
-
addHook(hook, exports => exports)
|
|
11
|
-
}
|