Skip to content

fix: [OTLP] detect http/https protocol from parsedUrl.protocol#9028

Open
ida613 wants to merge 4 commits into
masterfrom
ida613/otlp-trace-fix
Open

fix: [OTLP] detect http/https protocol from parsedUrl.protocol#9028
ida613 wants to merge 4 commits into
masterfrom
ida613/otlp-trace-fix

Conversation

@ida613

@ida613 ida613 commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

What does this PR do?

As title, ensures https payloads are encrypted

Motivation

Additional Notes

@ida613 ida613 requested a review from a team as a code owner June 22, 2026 19:58
@ida613 ida613 requested review from khanayan123 and removed request for a team June 22, 2026 19:58
@ida613 ida613 requested a review from a team June 22, 2026 19:58
@ida613 ida613 changed the title fix: OTLP trace export - detect http/https protocol from prasedUrl.protocol fix: OTLP trace export - detect http/https protocol from parsedUrl.protocol Jun 22, 2026
@dd-octo-sts

dd-octo-sts Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Overall package size

Self size: 6.31 MB
Deduped: 7.38 MB
No deduping: 7.38 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.2.0 | 104.26 kB | 843.44 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | dc-polyfill | 0.1.11 | 25.74 kB | 25.74 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Jun 22, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 7 Pipeline jobs failed

System Tests | main / End-to-end #24 / express5 24   View in Datadog   GitHub Actions

🧪 3 Tests failed

tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing.test_api10_response_body_ignored_content_length_missing[express5] from system_tests_suite   View in Datadog
AssertionError: assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n).status_code
 +    where HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n) = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing object at 0x7f862d6c7ce0>.r

self = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing object at 0x7f862d6c7ce0>

    def test_api10_response_body_ignored_content_length_missing(self):
>       assert self.r.status_code == 200
E       AssertionError: assert 404 == 200
E        +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n).status_code
...
tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big.test_api10_response_body_ignored_content_length_too_big[express5] from system_tests_suite   View in Datadog
AssertionError: assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n).status_code
 +    where HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n) = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big object at 0x7f862d5afb90>.r

self = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big object at 0x7f862d5afb90>

    def test_api10_response_body_ignored_content_length_too_big(self):
>       assert self.r.status_code == 200
E       AssertionError: assert 404 == 200
E        +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n).status_code
...
View all 3 test failures

System Tests | main / End-to-end #30 / uds-express4 30   View in Datadog   GitHub Actions

🧪 3 Tests failed

tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing.test_api10_response_body_ignored_content_length_missing[uds-express4] from system_tests_suite   View in Datadog
AssertionError: assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n).status_code
 +    where HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n) = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing object at 0x7ffa483b9f10>.r

self = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing object at 0x7ffa483b9f10>

    def test_api10_response_body_ignored_content_length_missing(self):
>       assert self.r.status_code == 200
E       AssertionError: assert 404 == 200
E        +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n).status_code
...
tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big.test_api10_response_body_ignored_content_length_too_big[uds-express4] from system_tests_suite   View in Datadog
AssertionError: assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n).status_code
 +    where HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n) = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big object at 0x7ffa483b9a60>.r

self = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big object at 0x7ffa483b9a60>

    def test_api10_response_body_ignored_content_length_too_big(self):
>       assert self.r.status_code == 200
E       AssertionError: assert 404 == 200
E        +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n).status_code
...
View all 3 test failures

System Tests | main / End-to-end #39 / express4 39   View in Datadog   GitHub Actions

🧪 3 Tests failed

tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing.test_api10_response_body_ignored_content_length_missing[express4] from system_tests_suite   View in Datadog
AssertionError: assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n).status_code
 +    where HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n) = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing object at 0x7f210e94e090>.r

self = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_missing object at 0x7f210e94e090>

    def test_api10_response_body_ignored_content_length_missing(self):
>       assert self.r.status_code == 200
E       AssertionError: assert 404 == 200
E        +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_missing</pre>\n</body>\n</html>\n).status_code
...
tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big.test_api10_response_body_ignored_content_length_too_big[express4] from system_tests_suite   View in Datadog
AssertionError: assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n).status_code
 +    where HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n) = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big object at 0x7f210e94dbb0>.r

self = <tests.appsec.rasp.test_api10.Test_API10_response_body_ignored_content_length_too_big object at 0x7f210e94dbb0>

    def test_api10_response_body_ignored_content_length_too_big(self):
>       assert self.r.status_code == 200
E       AssertionError: assert 404 == 200
E        +  where 404 = HttpResponse(status_code:404, headers:{'X-Powered-By': 'Express', 'Strict-Transport-Security': 'max-age=31536000', 'X-...rror</title>\n</head>\n<body>\n<pre>Cannot GET /external_request/body_limit/content_length_too_big</pre>\n</body>\n</html>\n).status_code
...
View all 3 test failures

View all 7 failed jobs.

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 6d0218f | Docs | Datadog PR Page | Give us feedback!

@ida613 ida613 changed the title fix: OTLP trace export - detect http/https protocol from parsedUrl.protocol fix: [OTLP] detect http/https protocol from parsedUrl.protocol Jun 22, 2026
Comment thread packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js Outdated
@codecov

codecov Bot commented Jun 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 51.41%. Comparing base (2da11d0) to head (6d0218f).
⚠️ Report is 5 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff             @@
##           master    #9028       +/-   ##
===========================================
- Coverage   93.43%   51.41%   -42.02%     
===========================================
  Files         879      426      -453     
  Lines       50450    23744    -26706     
  Branches     9930     3745     -6185     
===========================================
- Hits        47137    12208    -34929     
- Misses       3313    11536     +8223     
Flag Coverage Δ
aiguard-integration-active ?
aiguard-integration-latest ?
aiguard-integration-maintenance ?
aiguard-macos 34.56% <ø> (+<0.01%) ⬆️
aiguard-ubuntu ?
aiguard-windows ?
apm-capabilities-tracing-macos ?
apm-capabilities-tracing-ubuntu-active ?
apm-capabilities-tracing-ubuntu-latest ?
apm-capabilities-tracing-ubuntu-maintenance ?
apm-capabilities-tracing-ubuntu-oldest ?
apm-capabilities-tracing-windows ?
apm-integrations-aerospike-18-gte.5.2.0 ?
apm-integrations-aerospike-20-gte.5.5.0 ?
apm-integrations-aerospike-22-gte.5.12.1 ?
apm-integrations-aerospike-22-gte.6.0.0 ?
apm-integrations-aerospike-eol- ?
apm-integrations-child-process ?
apm-integrations-confluentinc-kafka-javascript-18 ?
apm-integrations-confluentinc-kafka-javascript-20 ?
apm-integrations-confluentinc-kafka-javascript-22 ?
apm-integrations-confluentinc-kafka-javascript-24 ?
apm-integrations-couchbase-18 ?
apm-integrations-couchbase-eol ?
apm-integrations-dns ?
apm-integrations-elasticsearch ?
apm-integrations-http-latest ?
apm-integrations-http-maintenance ?
apm-integrations-http-oldest ?
apm-integrations-http2 ?
apm-integrations-kafkajs-latest ?
apm-integrations-kafkajs-oldest ?
apm-integrations-net ?
apm-integrations-next-11.1.4 36.66% <ø> (+0.13%) ⬆️
apm-integrations-next-12.3.7 36.66% <ø> (+0.13%) ⬆️
apm-integrations-next-13.0.0 ?
apm-integrations-next-13.2.0 ?
apm-integrations-next-13.5.11 ?
apm-integrations-next-14.0.0 ?
apm-integrations-next-14.2.35 ?
apm-integrations-next-14.2.6 ?
apm-integrations-next-14.2.7 ?
apm-integrations-next-15.0.0 ?
apm-integrations-next-15.4.0 ?
apm-integrations-next-latest ?
apm-integrations-oracledb ?
apm-integrations-prisma-18-gte.6.16.0.and.lt.7.0.0 ?
apm-integrations-prisma-latest-all ?
apm-integrations-restify ?
apm-integrations-sharedb 32.45% <ø> (+<0.01%) ⬆️
apm-integrations-tedious ?
appsec-express ?
appsec-fastify ?
appsec-graphql ?
appsec-integration-active ?
appsec-integration-latest ?
appsec-integration-maintenance ?
appsec-integration-oldest ?
appsec-kafka ?
appsec-ldapjs ?
appsec-lodash ?
appsec-macos ?
appsec-mongodb-core ?
appsec-mongoose ?
appsec-mysql ?
appsec-next-latest-11.1.4 ?
appsec-next-latest-12.3.7 27.43% <ø> (+0.28%) ⬆️
appsec-next-latest-13.0.0 ?
appsec-next-latest-13.2.0 ?
appsec-next-latest-13.5.11 ?
appsec-next-latest-14.2.35 ?
appsec-next-latest-14.2.6 ?
appsec-next-latest-14.2.7 ?
appsec-next-latest-15.0.0 ?
appsec-next-latest-latest ?
appsec-next-oldest-11.1.4 ?
appsec-next-oldest-12.3.7 ?
appsec-next-oldest-13.0.0 ?
appsec-next-oldest-13.2.0 ?
appsec-next-oldest-13.5.11 ?
appsec-next-oldest-14.0.0 ?
appsec-next-oldest-14.2.35 ?
appsec-next-oldest-14.2.6 ?
appsec-next-oldest-14.2.7 ?
appsec-next-oldest-15.0.0 ?
appsec-next-oldest-latest ?
appsec-node-serialize 39.05% <ø> (-0.01%) ⬇️
appsec-passport 42.65% <ø> (-0.01%) ⬇️
appsec-postgres ?
appsec-sourcing ?
appsec-stripe ?
appsec-template ?
appsec-ubuntu ?
appsec-windows ?
debugger-ubuntu-active ?
debugger-ubuntu-latest ?
debugger-ubuntu-maintenance ?
debugger-ubuntu-oldest ?
instrumentations-instrumentation-ai 45.53% <ø> (+0.37%) ⬆️
instrumentations-instrumentation-aws-sdk ?
instrumentations-instrumentation-bluebird 27.60% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-body-parser ?
instrumentations-instrumentation-child_process ?
instrumentations-instrumentation-connect ?
instrumentations-instrumentation-cookie-parser ?
instrumentations-instrumentation-couchbase-18 ?
instrumentations-instrumentation-couchbase-eol ?
instrumentations-instrumentation-crypto 27.57% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-express ?
instrumentations-instrumentation-express-mongo-sanitize ?
instrumentations-instrumentation-express-multi-version 41.80% <ø> (+0.32%) ⬆️
instrumentations-instrumentation-express-session ?
instrumentations-instrumentation-fastify ?
instrumentations-instrumentation-fetch 45.21% <ø> (+0.44%) ⬆️
instrumentations-instrumentation-fs 27.28% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-generic-pool 27.46% <ø> (+0.13%) ⬆️
instrumentations-instrumentation-hono 28.82% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-http 37.90% <ø> (-0.01%) ⬇️
instrumentations-instrumentation-http-client-options 37.51% <ø> (-0.01%) ⬇️
instrumentations-instrumentation-kafkajs 49.19% <ø> (+0.43%) ⬆️
instrumentations-instrumentation-knex ?
instrumentations-instrumentation-koa 46.11% <ø> (+0.39%) ⬆️
instrumentations-instrumentation-light-my-request 35.29% <ø> (+<0.01%) ⬆️
instrumentations-instrumentation-mongoose ?
instrumentations-instrumentation-multer ?
instrumentations-instrumentation-mysql2 ?
instrumentations-instrumentation-openai-lifecycle 46.21% <ø> (+0.39%) ⬆️
instrumentations-instrumentation-otel-sdk-trace 25.45% <ø> (+0.10%) ⬆️
instrumentations-instrumentation-passport 39.21% <ø> (-0.01%) ⬇️
instrumentations-instrumentation-passport-http 38.90% <ø> (-0.01%) ⬇️
instrumentations-instrumentation-passport-local 39.36% <ø> (-0.01%) ⬇️
instrumentations-instrumentation-pg ?
instrumentations-instrumentation-promise 27.55% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-promise-js 27.55% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-q 27.58% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-restify ?
instrumentations-instrumentation-router 43.64% <ø> (+0.27%) ⬆️
instrumentations-instrumentation-stripe ?
instrumentations-instrumentation-url 27.40% <ø> (+0.01%) ⬆️
instrumentations-instrumentation-when ?
instrumentations-instrumentation-zlib 27.45% <ø> (+0.01%) ⬆️
instrumentations-integration-esbuild-0.16.12-active ?
instrumentations-integration-esbuild-0.16.12-latest ?
instrumentations-integration-esbuild-0.16.12-maintenance ?
instrumentations-integration-esbuild-0.16.12-oldest ?
instrumentations-integration-esbuild-latest-active ?
instrumentations-integration-esbuild-latest-latest ?
instrumentations-integration-esbuild-latest-maintenance ?
instrumentations-integration-esbuild-latest-oldest ?
llmobs-ai ?
llmobs-anthropic ?
llmobs-bedrock ?
llmobs-google-genai ?
llmobs-langchain ?
llmobs-openai-latest ?
llmobs-openai-oldest ?
llmobs-sdk-active ?
llmobs-sdk-latest ?
llmobs-sdk-maintenance ?
llmobs-sdk-oldest ?
llmobs-vertex-ai ?
master-coverage 51.41% <ø> (?)
openfeature-macos 37.48% <ø> (+0.06%) ⬆️
openfeature-ubuntu ?
openfeature-unit-active 49.87% <ø> (-0.08%) ⬇️
openfeature-unit-latest 49.87% <ø> (-0.08%) ⬇️
openfeature-unit-maintenance 50.24% <ø> (-0.09%) ⬇️
openfeature-unit-oldest 50.24% <ø> (-0.09%) ⬇️
openfeature-windows ?
platform-core 46.47% <ø> (+0.48%) ⬆️
platform-esbuild 47.49% <ø> (+0.48%) ⬆️
platform-instrumentations-misc ?
platform-integration-active ?
platform-integration-latest ?
platform-integration-maintenance ?
platform-integration-oldest ?
platform-shimmer 47.50% <ø> (+0.44%) ⬆️
platform-unit-guardrails 44.42% <ø> (+0.38%) ⬆️
platform-webpack ?
plugins-aws-durable-execution-sdk-js ?
plugins-axios ?
plugins-azure-cosmos ?
plugins-azure-event-hubs ?
plugins-azure-service-bus ?
plugins-body-parser ?
plugins-bullmq ?
plugins-cassandra ?
plugins-cookie ?
plugins-cookie-parser ?
plugins-crypto ?
plugins-dd-trace-api 33.19% <ø> (+<0.01%) ⬆️
plugins-express-mongo-sanitize ?
plugins-express-session ?
plugins-fastify ?
plugins-fetch ?
plugins-fs ?
plugins-generic-pool ?
plugins-google-cloud-pubsub ?
plugins-grpc ?
plugins-handlebars ?
plugins-hapi ?
plugins-hono ?
plugins-ioredis ?
plugins-jest ?
plugins-knex ?
plugins-langgraph ?
plugins-ldapjs ?
plugins-light-my-request ?
plugins-lodash ?
plugins-mariadb ?
plugins-memcached ?
plugins-microgateway-core ?
plugins-modelcontextprotocol-sdk ?
plugins-moleculer ?
plugins-mongodb ?
plugins-mongodb-core ?
plugins-mongoose ?
plugins-multer ?
plugins-mysql ?
plugins-mysql2 ?
plugins-nats ?
plugins-node-serialize ?
plugins-opensearch ?
plugins-passport-http ?
plugins-pino ?
plugins-postgres ?
plugins-process ?
plugins-pug ?
plugins-redis ?
plugins-router ?
plugins-sequelize ?
plugins-test-and-upstream-amqp10 ?
plugins-test-and-upstream-amqplib ?
plugins-test-and-upstream-apollo ?
plugins-test-and-upstream-avsc 33.65% <ø> (+<0.01%) ⬆️
plugins-test-and-upstream-bunyan ?
plugins-test-and-upstream-connect ?
plugins-test-and-upstream-graphql ?
plugins-test-and-upstream-koa ?
plugins-test-and-upstream-protobufjs ?
plugins-test-and-upstream-rhea ?
plugins-undici ?
plugins-url 42.71% <ø> (+0.35%) ⬆️
plugins-valkey ?
plugins-vm ?
plugins-winston ?
plugins-ws ?
profiling-macos ?
profiling-ubuntu ?
profiling-windows ?
serverless-aws-sdk-latest-aws-sdk ?
serverless-aws-sdk-latest-bedrockruntime ?
serverless-aws-sdk-latest-client ?
serverless-aws-sdk-latest-dynamodb ?
serverless-aws-sdk-latest-eventbridge ?
serverless-aws-sdk-latest-kinesis ?
serverless-aws-sdk-latest-lambda ?
serverless-aws-sdk-latest-s3 ?
serverless-aws-sdk-latest-serverless-peer-service ?
serverless-aws-sdk-latest-sns ?
serverless-aws-sdk-latest-sqs ?
serverless-aws-sdk-latest-stepfunctions ?
serverless-aws-sdk-latest-util ?
serverless-aws-sdk-oldest-aws-sdk ?
serverless-aws-sdk-oldest-bedrockruntime ?
serverless-aws-sdk-oldest-client ?
serverless-aws-sdk-oldest-dynamodb ?
serverless-aws-sdk-oldest-eventbridge ?
serverless-aws-sdk-oldest-kinesis ?
serverless-aws-sdk-oldest-lambda ?
serverless-aws-sdk-oldest-s3 ?
serverless-aws-sdk-oldest-serverless-peer-service ?
serverless-aws-sdk-oldest-sns ?
serverless-aws-sdk-oldest-sqs ?
serverless-aws-sdk-oldest-stepfunctions ?
serverless-aws-sdk-oldest-util ?
serverless-azure-durable-functions ?
serverless-azure-functions-eventhubs ?
serverless-azure-functions-servicebus ?
serverless-lambda ?
test-optimization-cucumber-latest-7.0.0 ?
test-optimization-cucumber-latest-latest ?
test-optimization-cucumber-oldest-7.0.0 ?
test-optimization-cypress-latest-12.0.0-commonJS ?
test-optimization-cypress-latest-12.0.0-esm ?
test-optimization-cypress-latest-14.5.4-commonJS ?
test-optimization-cypress-latest-14.5.4-esm ?
test-optimization-cypress-latest-latest-commonJS ?
test-optimization-cypress-latest-latest-esm ?
test-optimization-cypress-oldest-12.0.0-commonJS ?
test-optimization-cypress-oldest-12.0.0-esm ?
test-optimization-cypress-oldest-14.5.4-commonJS ?
test-optimization-cypress-oldest-14.5.4-esm ?
test-optimization-jest-latest-latest ?
test-optimization-jest-latest-oldest ?
test-optimization-jest-oldest-latest ?
test-optimization-jest-oldest-oldest ?
test-optimization-mocha-latest-latest ?
test-optimization-mocha-latest-oldest ?
test-optimization-mocha-oldest-latest ?
test-optimization-mocha-oldest-oldest ?
test-optimization-playwright-latest-latest-playwright-active-test-span ?
test-optimization-playwright-latest-latest-playwright-atr ?
test-optimization-playwright-latest-latest-playwright-efd ?
test-optimization-playwright-latest-latest-playwright-final-status ?
test-optimization-playwright-latest-latest-playwright-impacted-tests ?
test-optimization-playwright-latest-latest-playwright-reporting ?
test-optimization-playwright-latest-latest-playwright-test-management ?
test-optimization-playwright-latest-oldest-playwright-active-test-span ?
test-optimization-playwright-latest-oldest-playwright-atr ?
test-optimization-playwright-latest-oldest-playwright-efd ?
test-optimization-playwright-latest-oldest-playwright-final-status ?
test-optimization-playwright-latest-oldest-playwright-impacted-tests ?
test-optimization-playwright-latest-oldest-playwright-test-management ?
test-optimization-playwright-oldest-latest-playwright-active-test-span ?
test-optimization-playwright-oldest-latest-playwright-atr ?
test-optimization-playwright-oldest-latest-playwright-efd ?
test-optimization-playwright-oldest-latest-playwright-final-status ?
test-optimization-playwright-oldest-latest-playwright-impacted-tests ?
test-optimization-playwright-oldest-latest-playwright-reporting ?
test-optimization-playwright-oldest-latest-playwright-test-management ?
test-optimization-playwright-oldest-oldest-playwright-atr ?
test-optimization-playwright-oldest-oldest-playwright-efd ?
test-optimization-playwright-oldest-oldest-playwright-final-status ?
test-optimization-playwright-oldest-oldest-playwright-impacted-tests ?
test-optimization-playwright-oldest-oldest-playwright-reporting ?
test-optimization-playwright-oldest-oldest-playwright-test-management ?
test-optimization-selenium-latest ?
test-optimization-selenium-oldest ?
test-optimization-testopt-active ?
test-optimization-testopt-latest ?
test-optimization-testopt-maintenance ?
test-optimization-testopt-oldest ?
test-optimization-vitest-latest ?
test-optimization-vitest-oldest ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter

pr-commenter Bot commented Jun 22, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-06-23 20:46:22

Comparing candidate commit 6d0218f in PR branch ida613/otlp-trace-fix with baseline commit 2da11d0 in branch master.

📊 Benchmarking dashboard

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1952 metrics, 13 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

Unstable benchmarks

These benchmarks have a confidence interval too wide to call a change; treat them as noise rather than signal.

scenario:appsec-appsec-enabled-26

  • unstable execution_time [-172662.597µs; +171589.431µs] or [-6.948%; +6.905%]

scenario:appsec-control-20

  • unstable execution_time [-109.502ms; +112.084ms] or [-6.461%; +6.614%]

scenario:appsec-control-24

  • unstable execution_time [-92.477ms; +95.833ms] or [-7.700%; +7.979%]

scenario:appsec-control-26

  • unstable execution_time [-99.545ms; +82.991ms] or [-8.489%; +7.077%]

scenario:debugger-line-probe-with-snapshot-default-20

  • unstable max_rss_usage [-8.708MB; +12.676MB] or [-4.815%; +7.009%]

scenario:dogstatsd-with-tags-20

  • unstable cpu_user_time [-291.905ms; +378.913ms] or [-5.896%; +7.653%]
  • unstable execution_time [-290.956ms; +379.346ms] or [-5.789%; +7.548%]

scenario:plugin-graphql-long-with-depth-and-collapse-off-24

  • unstable cpu_user_time [-255.866ms; +418.325ms] or [-5.646%; +9.232%]
  • unstable execution_time [-261.929ms; +447.699ms] or [-5.431%; +9.282%]
  • unstable max_rss_usage [-28.253MB; +46.085MB] or [-5.134%; +8.375%]

scenario:plugin-graphql-long-with-depth-off-20

  • unstable max_rss_usage [-11.546MB; +8.305MB] or [-8.298%; +5.969%]

scenario:spans-finish-later-26

  • unstable max_rss_usage [-18.988MB; +14.419MB] or [-10.043%; +7.627%]

scenario:test-optimization-large-suite-20

  • unstable max_rss_usage [-4010.895KB; +4125.895KB] or [-5.041%; +5.185%]

Comment thread packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js Outdated
Comment thread packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js Outdated

@BridgeAR BridgeAR left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mainly LGTM!

this.options.hostname = parsedUrl.hostname
this.options.port = parsedUrl.port
this.options.path = parsedUrl.pathname + parsedUrl.search
this.#transport = parsedUrl.protocol === 'http:' ? http : https

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mind also updating the telemetryTags while being on it? :)

Suggested change
this.#transport = parsedUrl.protocol === 'http:' ? http : https
this.#transport = parsedUrl.protocol === 'http:' ? http : https
if (this.telemetryTags !== undefined) {
this.telemetryTags[0] = `protocol:${this.#transport === https ? 'https' : 'http'}`
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants