dd-trace 6.9.0 → 6.11.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/README.md +0 -17
- package/ci/vitest-no-worker-init-setup.mjs +112 -10
- package/index.d.ts +150 -3
- package/initialize.mjs +28 -17
- package/openfeature.js +2 -2
- package/package.json +14 -10
- package/packages/datadog-esbuild/index.js +0 -34
- package/packages/datadog-instrumentations/src/anthropic.js +210 -15
- package/packages/datadog-instrumentations/src/aws-sdk.js +9 -1
- package/packages/datadog-instrumentations/src/browser-bunyan.js +11 -0
- package/packages/datadog-instrumentations/src/bunyan.js +3 -16
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +111 -6
- package/packages/datadog-instrumentations/src/cucumber.js +26 -11
- package/packages/datadog-instrumentations/src/cypress-config.js +182 -16
- package/packages/datadog-instrumentations/src/cypress-legacy-finalizers.js +30 -0
- package/packages/datadog-instrumentations/src/cypress.js +2 -0
- package/packages/datadog-instrumentations/src/fastify.js +2 -0
- package/packages/datadog-instrumentations/src/helpers/bunyan.js +22 -0
- package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -1
- package/packages/datadog-instrumentations/src/helpers/pool-acquire.js +634 -0
- package/packages/datadog-instrumentations/src/helpers/register.js +10 -8
- package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +2 -1
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +81 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +1 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +83 -1
- package/packages/datadog-instrumentations/src/jest.js +26 -18
- package/packages/datadog-instrumentations/src/mariadb.js +278 -21
- package/packages/datadog-instrumentations/src/mocha/main.js +540 -56
- package/packages/datadog-instrumentations/src/mocha/utils.js +132 -25
- package/packages/datadog-instrumentations/src/mysql.js +45 -15
- package/packages/datadog-instrumentations/src/mysql2.js +119 -18
- package/packages/datadog-instrumentations/src/path-to-regexp.js +67 -1
- package/packages/datadog-instrumentations/src/pg.js +116 -92
- package/packages/datadog-instrumentations/src/playwright-reporter.js +99 -0
- package/packages/datadog-instrumentations/src/playwright.js +149 -2
- package/packages/datadog-instrumentations/src/router.js +2 -0
- package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +43 -4
- package/packages/datadog-instrumentations/src/vitest-main.js +180 -20
- package/packages/datadog-instrumentations/src/vitest-util.js +64 -5
- package/packages/datadog-instrumentations/src/vitest-worker.js +150 -25
- package/packages/datadog-instrumentations/src/webdriverio.js +31 -17
- package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/trace-checkpoint.js +12 -6
- package/packages/datadog-plugin-aws-sdk/src/base.js +1 -0
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +163 -44
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +4 -13
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +1 -5
- package/packages/datadog-plugin-azure-functions/src/index.js +1 -1
- package/packages/datadog-plugin-browser-bunyan/src/index.js +9 -0
- package/packages/datadog-plugin-bunyan/src/index.js +5 -8
- package/packages/datadog-plugin-cucumber/src/index.js +11 -0
- package/packages/datadog-plugin-cypress/src/after-run.js +5 -1
- package/packages/datadog-plugin-cypress/src/after-spec.js +5 -1
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +82 -30
- package/packages/datadog-plugin-cypress/src/finalization.js +76 -0
- package/packages/datadog-plugin-cypress/src/index.js +12 -6
- package/packages/datadog-plugin-cypress/src/plugin.js +16 -3
- package/packages/datadog-plugin-dd-trace-api/src/index.js +4 -0
- package/packages/datadog-plugin-electron/src/index.js +2 -0
- package/packages/datadog-plugin-fs/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +31 -17
- package/packages/datadog-plugin-jest/src/index.js +11 -4
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +2 -3
- package/packages/datadog-plugin-kafkajs/src/consumer.js +2 -3
- package/packages/datadog-plugin-kafkajs/src/producer.js +3 -2
- package/packages/datadog-plugin-kafkajs/src/utils.js +65 -7
- package/packages/datadog-plugin-mocha/src/index.js +606 -40
- package/packages/datadog-plugin-mysql/src/index.js +37 -0
- package/packages/datadog-plugin-nats/src/index.js +1 -1
- package/packages/datadog-plugin-next/src/index.js +1 -19
- package/packages/datadog-plugin-openai/src/tracing.js +41 -30
- package/packages/datadog-plugin-openai-agents/src/integration.js +279 -69
- package/packages/datadog-plugin-openai-agents/src/processor.js +16 -4
- package/packages/datadog-plugin-pg/src/index.js +1 -0
- package/packages/datadog-plugin-playwright/src/index.js +42 -13
- package/packages/datadog-plugin-vitest/src/index.js +14 -20
- package/packages/datadog-plugin-ws/src/util.js +2 -1
- package/packages/datadog-webpack/index.js +0 -11
- package/packages/dd-trace/index.js +0 -1
- package/packages/dd-trace/src/agent/info.js +6 -5
- package/packages/dd-trace/src/aiguard/client.js +100 -1
- package/packages/dd-trace/src/aiguard/errors.js +41 -0
- package/packages/dd-trace/src/aiguard/evaluation.js +357 -0
- package/packages/dd-trace/src/aiguard/integrations/anthropic.js +70 -0
- package/packages/dd-trace/src/aiguard/integrations/index.js +4 -0
- package/packages/dd-trace/src/aiguard/messages/anthropic.js +423 -0
- package/packages/dd-trace/src/aiguard/messages/openai.js +1 -24
- package/packages/dd-trace/src/aiguard/messages/utils.js +28 -0
- package/packages/dd-trace/src/aiguard/messages/vercel-ai.js +1 -11
- package/packages/dd-trace/src/aiguard/sdk.js +22 -278
- package/packages/dd-trace/src/appsec/api_security/normalized-route.js +453 -0
- package/packages/dd-trace/src/appsec/handlers/http-request.js +13 -0
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +9 -12
- package/packages/dd-trace/src/carrier.js +356 -0
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +1 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +27 -3
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +22 -6
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +21 -5
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/request-tracker.js +164 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +22 -6
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +365 -32
- package/packages/dd-trace/src/ci-visibility/exporters/request.js +201 -0
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +5 -3
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +9 -5
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -1
- package/packages/dd-trace/src/ci-visibility/requests/rate-limit.js +39 -0
- package/packages/dd-trace/src/ci-visibility/requests/request.js +3 -6
- package/packages/dd-trace/src/ci-visibility/requests/upload-test-screenshot.js +6 -2
- package/packages/dd-trace/src/config/generated-config-types.d.ts +7 -0
- package/packages/dd-trace/src/config/index.js +13 -2
- package/packages/dd-trace/src/config/major-overrides.js +7 -0
- package/packages/dd-trace/src/config/supported-configurations.json +24 -0
- package/packages/dd-trace/src/datastreams/context.js +6 -1
- package/packages/dd-trace/src/datastreams/index.js +2 -0
- package/packages/dd-trace/src/datastreams/manager.js +14 -3
- package/packages/dd-trace/src/datastreams/pathway.js +23 -22
- package/packages/dd-trace/src/datastreams/processor.js +16 -13
- package/packages/dd-trace/src/datastreams/size.js +5 -0
- package/packages/dd-trace/src/debugger/devtools_client/index.js +3 -2
- package/packages/dd-trace/src/exporters/agent/writer.js +49 -9
- package/packages/dd-trace/src/exporters/common/buffering-exporter.js +6 -4
- package/packages/dd-trace/src/exporters/common/writer.js +11 -6
- package/packages/dd-trace/src/llmobs/constants/tags.js +5 -0
- package/packages/dd-trace/src/llmobs/experiments/client.js +163 -5
- package/packages/dd-trace/src/llmobs/experiments/dataset.js +241 -87
- package/packages/dd-trace/src/llmobs/experiments/experiment.js +280 -20
- package/packages/dd-trace/src/llmobs/experiments/index.js +58 -59
- package/packages/dd-trace/src/llmobs/experiments/noop.js +71 -3
- package/packages/dd-trace/src/llmobs/experiments/result.js +1 -0
- package/packages/dd-trace/src/llmobs/experiments/util.js +41 -5
- package/packages/dd-trace/src/llmobs/index.js +34 -2
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +12 -3
- package/packages/dd-trace/src/llmobs/plugins/base.js +4 -2
- package/packages/dd-trace/src/llmobs/span_processor.js +16 -0
- package/packages/dd-trace/src/llmobs/tagger.js +96 -0
- package/packages/dd-trace/src/llmobs/util.js +78 -0
- package/packages/dd-trace/src/noop/proxy.js +3 -4
- package/packages/dd-trace/src/openfeature/flagging_provider.js +18 -2
- package/packages/dd-trace/src/openfeature/remote_config.js +1 -1
- package/packages/dd-trace/src/opentelemetry/context_manager.js +7 -7
- package/packages/dd-trace/src/opentelemetry/logs/batch_log_processor.js +2 -1
- package/packages/dd-trace/src/opentelemetry/logs/logger.js +67 -11
- package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +14 -3
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +25 -12
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_exporter.js +2 -5
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_transformer.js +96 -43
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +126 -120
- package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +4 -8
- package/packages/dd-trace/src/opentracing/tracer.js +5 -2
- package/packages/dd-trace/src/otel-thread-ctx.js +387 -0
- package/packages/dd-trace/src/plugin_manager.js +5 -3
- package/packages/dd-trace/src/plugins/ci_plugin.js +6 -1
- package/packages/dd-trace/src/plugins/index.js +1 -0
- package/packages/{datadog-plugin-jest/src/util.js → dd-trace/src/plugins/util/jest.js} +5 -65
- package/packages/dd-trace/src/plugins/util/test.js +93 -14
- package/packages/dd-trace/src/plugins/util/web.js +56 -2
- package/packages/dd-trace/src/profiling/profiler.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/space.js +1 -3
- package/packages/dd-trace/src/profiling/profilers/wall.js +37 -90
- package/packages/dd-trace/src/profiling/webspan-utils.js +45 -0
- package/packages/dd-trace/src/proxy.js +38 -29
- package/packages/dd-trace/src/ritm.js +9 -2
- package/packages/dd-trace/src/serverless.js +37 -0
- package/packages/dd-trace/src/span_format.js +1 -0
- package/packages/dd-trace/src/span_stats.js +30 -3
- package/packages/dd-trace/src/storage-channels.js +86 -0
- package/packages/dd-trace/src/tracer.js +9 -2
- package/packages/dd-trace/src/tracer_metadata.js +14 -1
- package/packages/dd-trace/src/web-tags-cache.js +132 -0
- package/vendor/dist/@datadog/openfeature-node-server/LICENSE +201 -0
- package/vendor/dist/@datadog/openfeature-node-server/index.js +1 -0
- package/packages/datadog-instrumentations/src/helpers/optional-peer-bundler.js +0 -65
- package/packages/datadog-webpack/src/optional-peer-loader.js +0 -17
- package/packages/dd-trace/src/feature-registry.js +0 -29
- package/packages/dd-trace/src/openfeature/register.js +0 -35
- package/packages/dd-trace/src/openfeature/require-provider.js +0 -18
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const BaseWriter = require('../../../exporters/common/writer')
|
|
4
|
+
|
|
5
|
+
const FINAL_FLUSH_TIMEOUT_CODE = 'ERR_DD_TEST_OPTIMIZATION_FLUSH_TIMEOUT'
|
|
6
|
+
|
|
7
|
+
class TestOptimizationRequestTracker {
|
|
8
|
+
#writer
|
|
9
|
+
#pendingRequests = new Set()
|
|
10
|
+
#finalFlushes = new Set()
|
|
11
|
+
#activeFinalFlush
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Creates request tracking for a Test Optimization writer.
|
|
15
|
+
*
|
|
16
|
+
* @param {BaseWriter} writer
|
|
17
|
+
*/
|
|
18
|
+
constructor (writer) {
|
|
19
|
+
this.#writer = writer
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Flushes queued payloads and, for a final flush, waits for requests that were
|
|
24
|
+
* already in flight. The absolute deadline prevents Test Optimization from
|
|
25
|
+
* keeping the test process alive indefinitely.
|
|
26
|
+
*
|
|
27
|
+
* @param {(error?: Error) => void} [done]
|
|
28
|
+
* @param {{ deadline?: number }} [options]
|
|
29
|
+
* @returns {void}
|
|
30
|
+
*/
|
|
31
|
+
flush (done, options) {
|
|
32
|
+
if (options?.deadline === undefined) {
|
|
33
|
+
BaseWriter.prototype.flush.call(this.#writer, done, options)
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const finalFlush = {
|
|
38
|
+
deadline: options.deadline,
|
|
39
|
+
done: done || (() => {}),
|
|
40
|
+
error: undefined,
|
|
41
|
+
requests: new Set(),
|
|
42
|
+
timeoutId: undefined,
|
|
43
|
+
writerDone: false,
|
|
44
|
+
}
|
|
45
|
+
this.#finalFlushes.add(finalFlush)
|
|
46
|
+
|
|
47
|
+
for (const pendingRequest of this.#pendingRequests) {
|
|
48
|
+
this.#attachRequest(finalFlush, pendingRequest)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const remaining = Math.max(0, options.deadline - Date.now())
|
|
52
|
+
finalFlush.timeoutId = setTimeout(() => {
|
|
53
|
+
const error = new Error('Timed out flushing Test Optimization data')
|
|
54
|
+
error.code = FINAL_FLUSH_TIMEOUT_CODE
|
|
55
|
+
|
|
56
|
+
finalFlush.error ||= error
|
|
57
|
+
finalFlush.writerDone = true
|
|
58
|
+
|
|
59
|
+
for (const pendingRequest of finalFlush.requests) {
|
|
60
|
+
pendingRequest.finalFlushes.delete(finalFlush)
|
|
61
|
+
if (pendingRequest.finalFlushes.size === 0) {
|
|
62
|
+
pendingRequest.controller.abort(error)
|
|
63
|
+
this.#pendingRequests.delete(pendingRequest)
|
|
64
|
+
} else {
|
|
65
|
+
this.#updateRequestDeadline(pendingRequest)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
finalFlush.requests.clear()
|
|
69
|
+
this.#finishFinalFlush(finalFlush)
|
|
70
|
+
}, remaining)
|
|
71
|
+
|
|
72
|
+
const previousFinalFlush = this.#activeFinalFlush
|
|
73
|
+
this.#activeFinalFlush = finalFlush
|
|
74
|
+
try {
|
|
75
|
+
BaseWriter.prototype.flush.call(this.#writer, (error) => {
|
|
76
|
+
finalFlush.error ||= error
|
|
77
|
+
finalFlush.writerDone = true
|
|
78
|
+
this.#finishFinalFlush(finalFlush)
|
|
79
|
+
}, options)
|
|
80
|
+
} finally {
|
|
81
|
+
this.#activeFinalFlush = previousFinalFlush
|
|
82
|
+
}
|
|
83
|
+
this.#finishFinalFlush(finalFlush)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Sends and tracks a request so a later final flush can wait for or abort it.
|
|
88
|
+
*
|
|
89
|
+
* @param {Function} request
|
|
90
|
+
* @param {Buffer|string|object} data
|
|
91
|
+
* @param {object} options
|
|
92
|
+
* @param {(error: Error|null, result?: string|null, statusCode?: number,
|
|
93
|
+
* headers?: import('node:http').IncomingHttpHeaders) => void} callback
|
|
94
|
+
* @returns {void}
|
|
95
|
+
*/
|
|
96
|
+
send (request, data, options, callback) {
|
|
97
|
+
const controller = new AbortController()
|
|
98
|
+
const requestOptions = { ...options, signal: controller.signal }
|
|
99
|
+
const pendingRequest = { controller, finalFlushes: new Set(), options: requestOptions }
|
|
100
|
+
this.#pendingRequests.add(pendingRequest)
|
|
101
|
+
if (this.#activeFinalFlush) this.#attachRequest(this.#activeFinalFlush, pendingRequest)
|
|
102
|
+
|
|
103
|
+
request(data, requestOptions, (error, result, statusCode, headers) => {
|
|
104
|
+
if (error) {
|
|
105
|
+
for (const finalFlush of pendingRequest.finalFlushes) finalFlush.error ||= error
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
try {
|
|
109
|
+
callback(error, result, statusCode, headers)
|
|
110
|
+
} finally {
|
|
111
|
+
this.#pendingRequests.delete(pendingRequest)
|
|
112
|
+
for (const finalFlush of pendingRequest.finalFlushes) {
|
|
113
|
+
finalFlush.requests.delete(pendingRequest)
|
|
114
|
+
this.#finishFinalFlush(finalFlush)
|
|
115
|
+
}
|
|
116
|
+
pendingRequest.finalFlushes.clear()
|
|
117
|
+
}
|
|
118
|
+
})
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Associates a request with the final flush boundary that must wait for it.
|
|
123
|
+
*
|
|
124
|
+
* @param {object} finalFlush
|
|
125
|
+
* @param {object} pendingRequest
|
|
126
|
+
* @returns {void}
|
|
127
|
+
*/
|
|
128
|
+
#attachRequest (finalFlush, pendingRequest) {
|
|
129
|
+
finalFlush.requests.add(pendingRequest)
|
|
130
|
+
pendingRequest.finalFlushes.add(finalFlush)
|
|
131
|
+
this.#updateRequestDeadline(pendingRequest)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Gives a shared request the latest deadline of the flushes waiting for it.
|
|
136
|
+
*
|
|
137
|
+
* @param {object} pendingRequest
|
|
138
|
+
* @returns {void}
|
|
139
|
+
*/
|
|
140
|
+
#updateRequestDeadline (pendingRequest) {
|
|
141
|
+
let deadline = 0
|
|
142
|
+
for (const finalFlush of pendingRequest.finalFlushes) {
|
|
143
|
+
deadline = Math.max(deadline, finalFlush.deadline)
|
|
144
|
+
}
|
|
145
|
+
pendingRequest.options.deadline = deadline
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Completes a final flush callback once its writer and associated requests
|
|
150
|
+
* have settled.
|
|
151
|
+
*
|
|
152
|
+
* @param {object} finalFlush
|
|
153
|
+
* @returns {void}
|
|
154
|
+
*/
|
|
155
|
+
#finishFinalFlush (finalFlush) {
|
|
156
|
+
if (!this.#finalFlushes.has(finalFlush) || !finalFlush.writerDone || finalFlush.requests.size !== 0) return
|
|
157
|
+
|
|
158
|
+
this.#finalFlushes.delete(finalFlush)
|
|
159
|
+
clearTimeout(finalFlush.timeoutId)
|
|
160
|
+
finalFlush.done(finalFlush.error)
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
module.exports = TestOptimizationRequestTracker
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
const getConfig = require('../../../config')
|
|
3
|
-
const request = require('../../../exporters/common/request')
|
|
4
3
|
const { safeJSONStringify } = require('../../../exporters/common/util')
|
|
5
4
|
const log = require('../../../log')
|
|
6
5
|
|
|
7
|
-
const { AgentlessCiVisibilityEncoder } = require('../../../encode/agentless-ci-visibility')
|
|
8
|
-
const BaseWriter = require('../../../exporters/common/writer')
|
|
9
6
|
const {
|
|
10
7
|
incrementCountMetric,
|
|
11
8
|
distributionMetric,
|
|
@@ -15,17 +12,35 @@ const {
|
|
|
15
12
|
TELEMETRY_ENDPOINT_PAYLOAD_REQUESTS_ERRORS,
|
|
16
13
|
TELEMETRY_ENDPOINT_PAYLOAD_DROPPED,
|
|
17
14
|
} = require('../../../ci-visibility/telemetry')
|
|
15
|
+
const { AgentlessCiVisibilityEncoder } = require('../../../encode/agentless-ci-visibility')
|
|
16
|
+
const BaseWriter = require('../../../exporters/common/writer')
|
|
17
|
+
const request = require('../request')
|
|
18
|
+
const TestOptimizationRequestTracker = require('./request-tracker')
|
|
18
19
|
|
|
19
20
|
class Writer extends BaseWriter {
|
|
21
|
+
#requestTracker
|
|
22
|
+
|
|
20
23
|
constructor ({ url, tags, evpProxyPrefix = '' }) {
|
|
21
24
|
super(...arguments)
|
|
25
|
+
this.#requestTracker = new TestOptimizationRequestTracker(this)
|
|
22
26
|
const { 'runtime-id': runtimeId, env, service } = tags
|
|
23
27
|
this._url = url
|
|
24
28
|
this._encoder = new AgentlessCiVisibilityEncoder(this, { runtimeId, env, service })
|
|
25
29
|
this._evpProxyPrefix = evpProxyPrefix
|
|
26
30
|
}
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Flushes buffered events, waiting for tracked requests during finalization.
|
|
34
|
+
*
|
|
35
|
+
* @param {(error?: Error) => void} [done]
|
|
36
|
+
* @param {{ deadline?: number }} [options]
|
|
37
|
+
* @returns {void}
|
|
38
|
+
*/
|
|
39
|
+
flush (done, options) {
|
|
40
|
+
this.#requestTracker.flush(done, options)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
_sendPayload (data, _, done, flushOptions) {
|
|
29
44
|
const options = {
|
|
30
45
|
path: '/api/v2/citestcycle',
|
|
31
46
|
method: 'POST',
|
|
@@ -35,6 +50,7 @@ class Writer extends BaseWriter {
|
|
|
35
50
|
},
|
|
36
51
|
timeout: 15_000,
|
|
37
52
|
url: this._url,
|
|
53
|
+
deadline: flushOptions?.deadline,
|
|
38
54
|
}
|
|
39
55
|
|
|
40
56
|
if (this._evpProxyPrefix) {
|
|
@@ -51,7 +67,7 @@ class Writer extends BaseWriter {
|
|
|
51
67
|
incrementCountMetric(TELEMETRY_ENDPOINT_PAYLOAD_REQUESTS, { endpoint: 'test_cycle' })
|
|
52
68
|
distributionMetric(TELEMETRY_ENDPOINT_PAYLOAD_BYTES, { endpoint: 'test_cycle' }, Buffer.byteLength(data))
|
|
53
69
|
|
|
54
|
-
request
|
|
70
|
+
this.#requestTracker.send(request, data, options, (err, res, statusCode) => {
|
|
55
71
|
distributionMetric(
|
|
56
72
|
TELEMETRY_ENDPOINT_PAYLOAD_REQUESTS_MS,
|
|
57
73
|
{ endpoint: 'test_cycle' },
|
|
@@ -67,7 +83,7 @@ class Writer extends BaseWriter {
|
|
|
67
83
|
{ endpoint: 'test_cycle' }
|
|
68
84
|
)
|
|
69
85
|
log.error('Error sending CI agentless payload', err)
|
|
70
|
-
done()
|
|
86
|
+
done(err)
|
|
71
87
|
return
|
|
72
88
|
}
|
|
73
89
|
log.debug('Response from the intake:', res)
|