Skip to content

v5.59.0 proposal #6109

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 53 commits into from
Jul 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
e06c376
perf: improve algorithm for getting callsites in AppSec (#6044)
watson Jul 8, 2025
97bc0c1
Enable recommended rules for eslint-plugin-n (#5216)
watson Jul 8, 2025
2901fbb
chore: update dependencies & dependabot & less cache lookups (#6041)
BridgeAR Jul 8, 2025
40d5618
ESLint: Require 'use strict' header (#5334)
watson Jul 8, 2025
bc9cf2e
test: remove get-port usage from inferred proxy test (#6054)
rochdev Jul 8, 2025
9cf30a2
test: remove get-port usage in core tests and appsec (#6060)
rochdev Jul 9, 2025
a8769c3
datastreams: safer and faster schema serialization (#6042)
BridgeAR Jul 9, 2025
cced560
ESLint: Scope certain files to other Node.js versions than v18.0.0 (#…
watson Jul 9, 2025
2715718
[test-optimization] Add logs for Playwright test (#6055)
Mariovido Jul 9, 2025
d2c9789
test: use dynamic queue name for aws sqs tests (#6050)
rochdev Jul 9, 2025
04a1b55
Use files property in package.json instead of .npmignore (#5320)
watson Jul 9, 2025
30e6211
support blocking on fastify multipart (#5980)
IlyasShabi Jul 9, 2025
babfb59
instrumentation: add hono support (#6061)
BridgeAR Jul 9, 2025
dbb698e
Bump native-appsec package + ASM multi DD config capability (#6049)
CarlesDD Jul 10, 2025
72ac79f
[test-optimization] [SDTEST-2267] Remove `getPort` from Test Optimiza…
Mariovido Jul 10, 2025
dd9aad3
[test-optimization] [SDTEST-2272] Fix `attempt_to_fix` tagging in Pla…
Mariovido Jul 10, 2025
88acf66
ESLint: Clean up Node.js built-in ignores (#6059)
watson Jul 10, 2025
5769703
move test optimization integration tests to dedicated folder (#6047)
rochdev Jul 10, 2025
f237bf5
fix sqs test race condition when deleting the queue (#6068)
rochdev Jul 10, 2025
af62fda
[test-optimization] [SDTEST-2264] Upgrade attempt_to_fix to `v5` (#6074)
Mariovido Jul 11, 2025
330c6cb
Update WAF rules to v1.15.0 (#6082)
CarlesDD Jul 11, 2025
5faf91f
fix indeterministic request id failing di snapshot test (#6084)
rochdev Jul 11, 2025
cefdf1d
[Code Origin] Take source maps into account in stack traces (#6070)
watson Jul 14, 2025
1c6b5cc
[test-optimization] [SDTEST-2290] Remove Cucumber and Selenium tests …
Mariovido Jul 14, 2025
2406c6d
chore(llmobs): add internal ability to tag tool id on tool messages (…
sabrenner Jul 14, 2025
d364bcb
ci: exercise more of the guardrails code during testing (#6034)
watson Jul 14, 2025
afc0d94
[DI] Add support for loading probes from JSON file (#5941)
watson Jul 14, 2025
65d6a33
[test-optimization] [SDTEST-2290] Fix support for Cucumber 12+ (#6087)
Mariovido Jul 14, 2025
225d941
fix: some guardrail telemetry should only be sent once (#6029)
watson Jul 14, 2025
d6d1370
remove async storage from child_process instrumentation (#5960)
wconti27 Jul 14, 2025
edbded5
datastreams: skip null array entries (#6090)
BridgeAR Jul 14, 2025
a3047f6
[test-optimization] downgrade limiter to v1.1.5 for old cypress (#6091)
BridgeAR Jul 14, 2025
08b048c
ci: add stats and branch/date options to flakiness report (#6076)
rochdev Jul 14, 2025
6a2ca78
ci: add paths config to workflows for github & pull_request trigger (…
rochdev Jul 14, 2025
05f1c93
test: update confluent kafka tests to use dynamic topic (#6079)
rochdev Jul 14, 2025
4fa522a
test: rewrite aws sqs batch test to be deterministic (#6083)
rochdev Jul 14, 2025
c959cc9
Revert "ci: add paths config to workflows for github & pull_request t…
watson Jul 15, 2025
6c03eae
ci: cap supported next version to be <15.4.1 (#6094)
watson Jul 15, 2025
70cdb45
replace get-port with OS default port in ip_extractor.spec.js (#6095)
simon-id Jul 15, 2025
df209f2
ci: disable legacy Gitlab exec in order to fix jobs failing with gree…
ddyurchenko Jul 15, 2025
511cfa6
feat(langchain, llmobs): expand langchain support for tools and vecto…
sabrenner Jul 15, 2025
2d9d582
revert next uncapping in source code (#6098)
rochdev Jul 15, 2025
ac9aad3
ci: add job count for parametric system tests (#6099)
rochdev Jul 15, 2025
44ee7e4
ci: add explicit dependabot label for use in automation (#6100)
rochdev Jul 15, 2025
8645885
Add ASM_EXCLUSION_DATA capability + RC management + test and refactor…
CarlesDD Jul 16, 2025
0ef0790
bump flakiness report green requirement (#6105)
rochdev Jul 16, 2025
748dc59
test: fix remote_config tests (#6102)
CarlesDD Jul 16, 2025
f69bc04
Tag profiles with a sequence number (#6106)
szegedi Jul 16, 2025
17c4e9a
Fix fs and rasp/iast problems (#6088)
uurien Jul 16, 2025
03f579e
ci: update one pipeline reference (#6112)
robertomonteromiguel Jul 17, 2025
d3b0fc5
chore: make as much of profiler internals private as possible (#6108)
szegedi Jul 17, 2025
64f67b0
ci: skip guardrail telemetry unit tests if DD_INJECT_FORCE is used (#…
watson Jul 17, 2025
2949b80
v5.59.0
watson Jul 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 21 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,21 @@ updates:
gh-actions-packages:
patterns:
- "*"
labels:
- dependabot
- dependencies
- github_actions
- semver-patch
- package-ecosystem: "npm"
directories:
- "/"
schedule:
interval: "weekly"
labels:
- dependabot
- dependencies
- javascript
- semver-patch
ignore:
- dependency-name: "@types/node"
# Update the types manually with new Node.js version support
Expand All @@ -31,6 +41,17 @@ updates:
- dependency-name: "jest-docblock"
# 30.0.0 onwards only supports Node.js 18.14.x and above
update-types: ["version-update:semver-major"]
# The path-to-regexp version has to be the same as used in express v4.
# Consider vendoring it instead.
- dependency-name: "path-to-regexp"
- dependency-name: "lru-cache"
# 11.0.0 onwards only supports Node.js 20 and above
update-types: ["version-update:semver-major"]
- dependency-name: "limiter"
# 2.0.0 onwards breaks our tests. 3.0.0 works but it requires Node.js v16.
# That breaks cypress in our v5 release line. Update when v5 is EOL.
# Reverting this commit should suffice.
update-types: ["version-update:semver-major"]
groups:
dev-minor-and-patch-dependencies:
dependency-type: "development"
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/apm-integrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,14 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/plugins/test

hono:
runs-on: ubuntu-latest
env:
PLUGINS: hono
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/plugins/test

http:
strategy:
matrix:
Expand Down Expand Up @@ -702,7 +710,7 @@ jobs:
version:
- 18
- latest
range: ['>=10.2.0 <11', '>=11.0.0 <13', '11.1.4', '>=13.0.0 <14', '13.2.0', '>=14.0.0 <=14.2.6', '>=14.2.7 <15', '>=15.0.0']
range: ['>=10.2.0 <11', '>=11.0.0 <13', '11.1.4', '>=13.0.0 <14', '13.2.0', '>=14.0.0 <=14.2.6', '>=14.2.7 <15', '>=15.0.0 <15.4.1']
include:
- range: '>=10.2.0 <11'
range_clean: gte.10.2.0.and.lt.11
Expand All @@ -718,7 +726,7 @@ jobs:
range_clean: gte.14.0.0.and.lte.14.2.6
- range: '>=14.2.7 <15'
range_clean: gte.14.2.7.and.lt.15
- range: '>=15.0.0'
- range: '>=15.0.0 <15.4.1'
range_clean: gte.15.0.0
runs-on: ubuntu-latest
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/appsec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ jobs:
version:
- oldest
- latest
range: ['>=10.2.0 <11', '>=11.0.0 <13', '11.1.4', '>=13.0.0 <14', '13.2.0', '>=14.0.0 <=14.2.6', '>=14.2.7 <15', '>=15.0.0']
range: ['>=10.2.0 <11', '>=11.0.0 <13', '11.1.4', '>=13.0.0 <14', '13.2.0', '>=14.0.0 <=14.2.6', '>=14.2.7 <15', '>=15.0.0 <15.4.1']
include:
- range: '>=10.2.0 <11'
range_clean: gte.10.2.0.and.lt.11
Expand All @@ -232,7 +232,7 @@ jobs:
range_clean: gte.14.0.0.and.lte.14.2.6
- range: '>=14.2.7 <15'
range_clean: gte.14.2.7.and.lt.15
- range: '>=15.0.0'
- range: '>=15.0.0 <15.4.1'
range_clean: gte.15.0.0
runs-on: ubuntu-latest
env:
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,15 @@ jobs:
- run: yarn test:integration
- run: yarn test:integration:esbuild

unit-guardrails:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/node/active-lts
- uses: ./.github/actions/install
- run: yarn test:trace:guardrails:ci
- uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3

# We'll run these separately for earlier (i.e. unsupported) versions
integration-guardrails:
strategy:
Expand All @@ -296,13 +305,16 @@ jobs:
version: ${{ matrix.version }}
- uses: ./.github/actions/install
- run: yarn add --ignore-scripts mocha@10 # Use older mocha to support old Node.js versions
- run: yarn add --ignore-scripts express@4 # Use older express to support old Node.js versions
- run: node node_modules/.bin/mocha --colors --timeout 30000 integration-tests/init.spec.js

integration-guardrails-unsupported:
strategy:
matrix:
version: ['0.8', '0.10', '0.12', '4', '6', '8', '10', '12']
runs-on: ubuntu-latest
env:
DD_TRACE_DEBUG: 'true' # This exercises more of the guardrails code
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/node
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/system-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,5 @@ jobs:
desired_execution_time: 300 # 5 minutes
scenarios_groups: tracer-release
excluded_scenarios: APM_TRACING_E2E_OTEL,APM_TRACING_E2E_SINGLE_SPAN # require AWS and datadog credentials
parametric_job_count: 8
skip_empty_scenarios: true
13 changes: 13 additions & 0 deletions .github/workflows/test-optimization.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,19 @@ jobs:
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}

integration:
strategy:
matrix:
version: [oldest, maintenance, active, latest]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/node
with:
version: ${{ matrix.version }}
- uses: ./.github/actions/install
- run: yarn test:integration:testopt

integration-playwright:
strategy:
matrix:
Expand Down
10 changes: 0 additions & 10 deletions .gitlab/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ variables:
paths:
- platform/artifacts/
expire_in: 3 months
variables:
# Gitlab and BP specific env vars. Do not modify.
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: dd-trace-js
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: "true"

benchmarks-pr-comment:
stage: benchmarks-pr-comment
Expand All @@ -38,9 +34,6 @@ benchmarks-pr-comment:
- cd platform && (git init && git remote add origin https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.ddbuild.io/DataDog/benchmarking-platform && git pull origin dd-trace-js)
- bp-runner bp-runner.pr-comment.yml --debug
allow_failure: true
variables:
# Gitlab and BP specific env vars. Do not modify.
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: dd-trace-js

check-big-regressions:
stage: benchmarks-pr-comment
Expand All @@ -51,9 +44,6 @@ check-big-regressions:
script:
- cd platform && (git init && git remote add origin https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.ddbuild.io/DataDog/benchmarking-platform && git pull origin dd-trace-js)
- bp-runner bp-runner.fail-on-regression.yml --debug
variables:
# Gitlab and BP specific env vars. Do not modify.
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: dd-trace-js

benchmark:
extends: .benchmarks
Expand Down
2 changes: 0 additions & 2 deletions .gitlab/macrobenchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@
- platform/artifacts/
expire_in: 3 months
variables:
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: "true"

K6_OPTIONS_WARMUP_RATE: 500
K6_OPTIONS_WARMUP_DURATION: 1m
K6_OPTIONS_WARMUP_GRACEFUL_STOP: 10s
Expand Down
2 changes: 1 addition & 1 deletion .gitlab/one-pipeline.locked.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# DO NOT EDIT THIS FILE MANUALLY
# This file is auto-generated by automation.
include:
- remote: https://gitlab-templates.ddbuild.io/libdatadog/one-pipeline/ca/d44e89797a5a47c43cf712193abefe2178a004176606f7e01b77d1ec49a3ef5e/one-pipeline.yml
- remote: https://gitlab-templates.ddbuild.io/libdatadog/one-pipeline/ca/a0486057161f85a77e39ad2aa60ac66bb52414696d9b3dd87177df1057b11295/one-pipeline.yml
22 changes: 0 additions & 22 deletions .npmignore

This file was deleted.

1 change: 1 addition & 0 deletions LICENSE-3rdparty.csv
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ dev,sinon,BSD-3-Clause,Copyright 2010-2017 Christian Johansen
dev,sinon-chai,WTFPL and BSD-2-Clause,Copyright 2004 Sam Hocevar 2012–2017 Domenic Denicola
dev,tap,ISC,Copyright 2011-2022 Isaac Z. Schlueter and Contributors
dev,tiktoken,MIT,Copyright (c) 2022 OpenAI, Shantanu Jain
dev,workerpool,Apache license 2.0,Copyright (C) 2014-2024 Jos de Jong wjosdejong@gmail.com
dev,yaml,ISC,Copyright Eemeli Aro <eemeli@gmail.com>
dev,yarn-deduplicate,Apache license 2.0,Copyright [yyyy] [name of copyright owner]
file,aws-lambda-nodejs-runtime-interface-client,Apache 2.0,Copyright 2019 Amazon.com Inc. or its affiliates. All Rights Reserved.
Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/appsec-iast/insecure-bank.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const http = require('http')
const app = require('/opt/insecure-bank-js/app') // eslint-disable-line import/no-absolute-path

Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/appsec/insecure-bank.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const http = require('http')
const app = require('/opt/insecure-bank-js/app') // eslint-disable-line import/no-absolute-path

Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/encoding/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const {
ENCODER_VERSION
} = process.env
Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/gc.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const { createHistogram, PerformanceObserver } = require('perf_hooks')
if (createHistogram) {
const StatsD = require('./statsd')
Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/means.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

/* eslint-disable no-console */

const chunks = []
Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/scope/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const {
DD_TRACE_SCOPE,
COUNT
Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/shimmer-runtime/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

/* eslint-disable require-await */

const shimmer = require('../../../packages/datadog-shimmer')
Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/shimmer-startup/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

/* eslint-disable require-await */

const shimmer = require('../../../packages/datadog-shimmer')
Expand Down
2 changes: 2 additions & 0 deletions benchmark/sirun/spans/spans.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const tracer = require('../../..').init()

tracer._tracer._processor.process = function process (span) {
Expand Down
1 change: 1 addition & 0 deletions benchmark/sirun/strip-unwanted-results.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env node
'use strict'

const fs = require('fs')
const path = require('path')
Expand Down
2 changes: 2 additions & 0 deletions ci/cypress/after-run.js
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
'use strict'

module.exports = require('../../packages/datadog-plugin-cypress/src/after-run')
2 changes: 2 additions & 0 deletions ci/cypress/after-spec.js
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
'use strict'

module.exports = require('../../packages/datadog-plugin-cypress/src/after-spec')
2 changes: 2 additions & 0 deletions ci/cypress/plugin.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const { NODE_MAJOR } = require('../../version')

// These polyfills are here because cypress@6.7.0, which we still support for v5, runs its plugin code
Expand Down
2 changes: 2 additions & 0 deletions ci/cypress/polyfills.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

if (!Object.hasOwn) {
Object.defineProperty(Object, 'hasOwn', {
// eslint-disable-next-line prefer-object-has-own
Expand Down
2 changes: 2 additions & 0 deletions ci/cypress/support.js
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
'use strict'

require('../../packages/datadog-plugin-cypress/src/support')
2 changes: 2 additions & 0 deletions ci/init.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

/* eslint-disable no-console */
const tracer = require('../packages/dd-trace')
const { isTrue, isFalse } = require('../packages/dd-trace/src/util')
Expand Down
22 changes: 11 additions & 11 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,14 +165,14 @@ services:

# Use this for local development when making new VCR cassettes to persist to the test agent
# Do not use the above testagent service if using this one.
testagent-vcr:
image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.24.1
ports:
- "127.0.0.1:9126:9126"
environment:
- LOG_LEVEL=DEBUG
- TRACE_LANGUAGE=javascript
- ENABLED_CHECKS=trace_stall,meta_tracer_version_header,trace_count_header,trace_peer_service
- PORT=9126
volumes:
- ${VCR_CASSETTES_PATH:-/tmp/empty-vcr}:/vcr-cassettes:delegated
# testagent-vcr:
# image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.24.1
# ports:
# - "127.0.0.1:9126:9126"
# environment:
# - LOG_LEVEL=DEBUG
# - TRACE_LANGUAGE=javascript
# - ENABLED_CHECKS=trace_stall,meta_tracer_version_header,trace_count_header,trace_peer_service
# - PORT=9126
# volumes:
# - ${VCR_CASSETTES_PATH:-/tmp/empty-vcr}:/vcr-cassettes:delegated
2 changes: 2 additions & 0 deletions docs/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,8 @@ tracer.use('grpc', { client: { metadata: [] } });
tracer.use('grpc', { server: { metadata: [] } });
tracer.use('hapi');
tracer.use('hapi', httpServerOptions);
tracer.use('hono');
tracer.use('hono', httpServerOptions);
tracer.use('http');
tracer.use('http', {
server: httpServerOptions
Expand Down
Loading
Loading