Skip to content

feat(openfeature): add agentless Feature Flagging configuration source#9402

Closed
leoromanovsky wants to merge 6 commits into
masterfrom
leo.romanovsky/ffl-2697-nodejs-agentless-narrative
Closed

feat(openfeature): add agentless Feature Flagging configuration source#9402
leoromanovsky wants to merge 6 commits into
masterfrom
leo.romanovsky/ffl-2697-nodejs-agentless-narrative

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

NOTE TO REVIEWERS

Please review the first four commits in order. Each introduces one application layer together with its tests and stays near the requested 300–400 LOC review size. The final small test-only commit locks the staging-site contract discovered during cross-SDK review.

This draft supersedes #9397. The implementation is unchanged in scope, but the history is rewritten into four narrative review units and includes the latest cross-SDK contract corrections.

Commit Guide

Commit Application layer and associated tests LOC (+/-)
a59b02f Resolve source selection, managed/custom endpoints, GovCloud behavior, and configuration metadata. +333
6817d53 Fetch UFC, authenticate requests, parse managed JSON:API, and support raw UFC only for custom endpoints. +337
ac78c62 Add ETag semantics, retries, timeouts, last-known-good preservation, no-overlap polling, and shutdown. +403 / -6
eb1f84c Wire the source into the OpenFeature provider lifecycle, public types, and a packaged-app integration test. +409 / -6
a363424 Lock DD_SITE=datad0g.com to the staging UFC CDN contract. +10

What does this PR do?

Adds a no-Agent Feature Flagging configuration path to dd-trace-js: load Universal Flag Configuration from the Datadog UFC CDN and evaluate flags locally through the existing OpenFeature provider.

Motivation

Node.js server and serverless applications need to use Feature Flagging without depending on a local Datadog Agent. Agentless CDN delivery becomes the default source, while Agent Remote Configuration remains available through explicit opt-in.

Changes

  • Adds DD_FEATURE_FLAGS_CONFIGURATION_SOURCE with agentless as the default, remote_config as explicit opt-in, and offline reserved for a future startup-bytes API.
  • Derives the managed URL as https://ufc-server.ff-cdn.<DD_SITE>/api/v2/feature-flagging/config/rules-based/server?dd_env=<DD_ENV>.
  • Treats DD_SITE=datad0g.com as the staging managed CDN site and regression-tests the exact derived URL.
  • Authenticates CDN requests with DD-API-KEY.
  • Adds an optional custom agentless URL for controlled system-test, dogfood, and operator-managed endpoints.
  • Requires managed responses to use JSON:API with data.type = universal-flag-configuration, then passes data.attributes to the existing evaluator.
  • Polls using ETags, If-None-Match, 304, bounded jittered retries, request timeouts, no overlap, last-known-good preservation, and shutdown cancellation.
  • Starts the Agent FFE_FLAGS Remote Configuration subscription only when remote_config is explicitly selected.
  • Leaves the provider available without a managed source on GovCloud so evaluations use caller defaults.

Decisions

Agentless is the default. An unset, empty, whitespace-only, or case-variant source value resolves to agentless. Agent Remote Configuration must be selected with remote_config.

Staging uses the same managed contract. DD_SITE=datad0g.com derives https://ufc-server.ff-cdn.datad0g.com/api/v2/feature-flagging/config/rules-based/server?dd_env=<DD_ENV>; staging is not hidden behind a custom endpoint.

Managed delivery is strict JSON:API. The Datadog-managed CDN response must contain a universal-flag-configuration resource and UFC fields under data.attributes. A malformed response never replaces the last-known-good configuration.

Custom URLs are exact when they include a path. A configured origin receives the standard rules-based path; a configured URL with a non-root path is used as the exact endpoint. Raw UFC is accepted only for explicitly configured custom endpoints for controlled compatibility.

There is no SDK payload-size cap. Valid managed JSON:API payloads larger than 500 KB are accepted.

ETags describe accepted configurations. A 200 response advances the ETag only after parsing and local application succeed. An accepted 200 without a non-blank ETag clears the previous ETag.

GovCloud managed delivery exits to defaults. With DD_SITE=ddog-gov.com and no custom URL, no configuration source is started. The provider remains usable and returns caller defaults. An explicitly configured custom endpoint is still allowed.

No custom headers. Agentless requests expose no custom-header configuration surface.

No emission changes. This PR only loads UFC and evaluates locally. It does not add or modify exposure emission, aggregate-evaluation emission, span enrichment, or evaluation metrics.

Offline remains reserved. No startup-bytes API or offline source is introduced here.

Delivery Architecture

flowchart TD
    Gate{Flagging provider enabled?}
    Select{Configuration source}

    Gate -- no --> Disabled[Provider not started]
    Gate -- yes --> Select

    Select -- unset or agentless --> Gov{Managed GovCloud?}
    Gov -- yes --> Defaults[No source<br/>caller defaults]
    Gov -- no --> URL{Custom URL?}
    URL -- no --> CDN[Datadog UFC CDN<br/>strict JSON:API]
    URL -- yes --> Custom[Custom endpoint<br/>JSON:API or raw UFC]

    CDN --> Poller[Authenticated poller<br/>ETag, retry, timeout, LKG]
    Custom --> Poller
    Poller --> UFC[Existing UFC pipeline]

    Select -- remote_config --> Agent[Datadog Agent RC<br/>FFE_FLAGS]
    Agent --> UFC

    Select -- offline --> Reserved[Reserved<br/>no source]

    UFC --> Evaluator[OpenFeature local evaluator]
    Evaluator --> Result[Application result]
    Defaults --> Result
Loading

Poll Lifecycle

sequenceDiagram
    participant App
    participant Source as Node agentless source
    participant CDN as UFC endpoint
    participant Evaluator as Local evaluator

    App->>Source: start
    Source->>CDN: GET .../server?dd_env=<env>
    Note over Source,CDN: DD-API-KEY
    CDN-->>Source: 200 JSON:API + optional ETag
    Source->>Evaluator: setConfiguration(data.attributes)
    Evaluator-->>App: local flag result

    loop fixed delay after completion
        Source->>CDN: GET with accepted If-None-Match
        alt unchanged
            CDN-->>Source: 304
        else changed
            CDN-->>Source: 200 + configuration
            Source->>Evaluator: apply accepted configuration
        else retryable failure
            CDN-->>Source: timeout, 429, or 5xx
            Source->>CDN: bounded jittered retries
        end
    end

    App->>Source: close
    Source-->>Source: cancel request and timers
Loading

Managed JSON:API Contract

{
  "data": {
    "id": "1",
    "type": "universal-flag-configuration",
    "attributes": {
      "createdAt": "2026-07-15T19:57:07.219869778Z",
      "environment": {
        "name": "Staging"
      },
      "flags": {}
    }
  }
}

Only data.attributes is supplied to the existing UFC evaluator.

Customer Usage Examples

Default Datadog-managed CDN delivery:

export DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true
export DD_API_KEY=<datadog-api-key>
export DD_SITE=datadoghq.com
export DD_ENV=prod

# DD_FEATURE_FLAGS_CONFIGURATION_SOURCE=agentless is optional.
node app.js

Datadog staging CDN delivery:

export DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true
export DD_API_KEY=<staging-api-key>
export DD_SITE=datad0g.com
export DD_ENV=staging
node app.js

Application code for either managed site:

const tracer = require('dd-trace').init()
const { OpenFeature } = require('@openfeature/server-sdk')

await OpenFeature.setProviderAndWait(tracer.openfeature)

const client = OpenFeature.getClient()
const details = await client.getStringDetails(
  'checkout-flow',
  'control',
  {
    targetingKey: user.id,
    plan: user.plan
  }
)

Explicit Agent Remote Configuration delivery:

export DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true
export DD_FEATURE_FLAGS_CONFIGURATION_SOURCE=remote_config
export DD_REMOTE_CONFIGURATION_ENABLED=true
node app.js

Custom agentless endpoint:

export DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true
export DD_API_KEY=<backend-api-key>
export DD_ENV=prod
export DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_BASE_URL=https://flags.example.com/ufc
node app.js

GovCloud managed behavior:

export DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true
export DD_SITE=ddog-gov.com
export DD_ENV=prod

# No managed source is started; evaluations return caller defaults.
node app.js

System Test Evidence

Using DataDog/system-tests#7315 with the Node.js manifest locally enabled:

PYTEST_XDIST_AUTO_NUM_WORKERS=4 TEST_LIBRARY=nodejs ./run.sh \
  PARAMETRIC tests/parametric/test_ffe/test_configuration_sources.py -q
15 passed in 83.96s (0:01:23)

The suite covers source selection, managed dd_env URL validation, JSON:API delivery, authentication, ETags and 304, malformed/cold/warm recovery, timeout and retry behavior, last-known-good preservation, and non-overlapping polls.

Additional Notes

The supporting system-tests contract is tracked in DataDog/system-tests#7315.

@dd-octo-sts

dd-octo-sts Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Overall package size

Self size: 6.79 MB
Deduped: 7.45 MB
No deduping: 7.45 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.3.1 | 122.62 kB | 438.86 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-us1-prod

datadog-datadog-us1-prod Bot commented Jul 16, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 2 Pipeline jobs failed

Platform | integration-guardrails (22.0.0)   View in Datadog   GitHub Actions

All Green | all-green   View in Datadog   GitHub Actions

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

🔄 Datadog auto-retried 1 job - 1 passed on retry View in Datadog

Useful? React with 👍 / 👎

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

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.40260% with 14 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.91%. Comparing base (76d4d45) to head (a363424).

Files with missing lines Patch % Lines
.../src/openfeature/agentless_configuration_source.js 97.25% 9 Missing ⚠️
...s/dd-trace/src/openfeature/configuration_source.js 97.14% 5 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##           master    #9402    +/-   ##
========================================
  Coverage   96.90%   96.91%            
========================================
  Files         923      925     +2     
  Lines      123011   123546   +535     
  Branches    21249    21286    +37     
========================================
+ Hits       119209   119732   +523     
- Misses       3802     3814    +12     
Flag Coverage Δ
aiguard 53.72% <70.52%> (+0.03%) ⬆️
aiguard-integration 57.15% <70.52%> (+0.05%) ⬆️
apm-bucket-0 53.95% <70.52%> (+0.03%) ⬆️
apm-bucket-1 58.90% <70.52%> (+<0.01%) ⬆️
apm-bucket-2 58.14% <70.52%> (+0.01%) ⬆️
apm-bucket-3 55.53% <70.52%> (+0.02%) ⬆️
apm-capabilities-tracing 60.65% <70.52%> (-0.01%) ⬇️
apm-integrations-aerospike 53.11% <70.52%> (+0.03%) ⬆️
apm-integrations-confluentinc-kafka-javascript 57.23% <70.52%> (+0.08%) ⬆️
apm-integrations-couchbase 53.44% <70.52%> (+0.03%) ⬆️
apm-integrations-http 58.08% <70.52%> (+0.01%) ⬆️
apm-integrations-kafkajs 57.88% <70.52%> (+0.01%) ⬆️
apm-integrations-next 54.32% <70.52%> (+0.03%) ⬆️
apm-integrations-prisma 54.32% <70.52%> (+0.02%) ⬆️
appsec 68.90% <70.52%> (-0.03%) ⬇️
appsec-express_fastify_graphql 65.74% <70.52%> (-0.02%) ⬇️
appsec-integration 51.98% <70.52%> (+0.07%) ⬆️
appsec-kafka_ldapjs_lodash 59.21% <70.52%> (+0.01%) ⬆️
appsec-mongodb-core_mongoose_mysql 62.42% <70.52%> (-0.01%) ⬇️
appsec-next 52.92% <70.52%> (+0.03%) ⬆️
appsec-node-serialize_passport_postgres 62.06% <70.52%> (-0.01%) ⬇️
appsec-sourcing_stripe_template 60.46% <70.52%> (+<0.01%) ⬆️
debugger 65.81% <90.00%> (+0.10%) ⬆️
instrumentations-bucket-0 48.97% <70.52%> (+0.05%) ⬆️
instrumentations-bucket-1 55.14% <70.52%> (+0.02%) ⬆️
instrumentations-bucket-10 56.75% <70.52%> (+0.01%) ⬆️
instrumentations-bucket-11 48.97% <70.52%> (+0.06%) ⬆️
instrumentations-bucket-12 49.14% <70.52%> (+0.05%) ⬆️
instrumentations-bucket-13 48.91% <70.52%> (+0.06%) ⬆️
instrumentations-bucket-2 50.11% <70.52%> (+0.05%) ⬆️
instrumentations-bucket-3 54.06% <70.52%> (+0.03%) ⬆️
instrumentations-bucket-4 49.39% <70.52%> (+0.05%) ⬆️
instrumentations-bucket-5 53.20% <70.52%> (+0.03%) ⬆️
instrumentations-bucket-6 55.78% <70.52%> (+0.02%) ⬆️
instrumentations-bucket-7 53.69% <70.52%> (+0.02%) ⬆️
instrumentations-bucket-8 54.82% <70.52%> (+0.02%) ⬆️
instrumentations-bucket-9 56.24% <70.52%> (+0.02%) ⬆️
instrumentations-instrumentation-couchbase 48.38% <70.52%> (+0.06%) ⬆️
instrumentations-integration-esbuild 34.04% <0.00%> (-0.01%) ⬇️
llmobs-ai_anthropic_bedrock 57.82% <70.52%> (+0.01%) ⬆️
llmobs-bucket-1 57.15% <70.52%> (+0.01%) ⬆️
llmobs-openai 57.55% <70.52%> (+0.01%) ⬆️
llmobs-sdk 60.12% <70.52%> (+<0.01%) ⬆️
llmobs-vertex-ai 54.38% <70.52%> (+0.03%) ⬆️
master-coverage 96.91% <97.40%> (?)
openfeature 56.70% <78.10%> (+1.99%) ⬆️
openfeature-unit 50.61% <96.10%> (+0.63%) ⬆️
platform-core_esbuild_instrumentations-misc 38.61% <70.52%> (+0.06%) ⬆️
platform-integration 62.35% <70.52%> (+0.03%) ⬆️
platform-shimmer_unit-guardrails_webpack 37.41% <70.52%> (+0.06%) ⬆️
plugins-bucket-0 53.32% <70.52%> (+0.03%) ⬆️
plugins-bucket-1 55.26% <70.52%> (+0.07%) ⬆️
plugins-bucket-11 57.67% <70.52%> (+0.01%) ⬆️
plugins-bucket-18 57.20% <70.52%> (+0.01%) ⬆️
plugins-bucket-19 55.53% <70.52%> (+0.02%) ⬆️
plugins-bucket-20 57.72% <70.52%> (+0.01%) ⬆️
plugins-bucket-4 53.94% <70.52%> (+0.03%) ⬆️
plugins-bullmq_cassandra_cookie 57.52% <70.52%> (+0.01%) ⬆️
plugins-cookie-parser_crypto_dd-trace-api 52.50% <70.52%> (+0.04%) ⬆️
plugins-fetch_fs_generic-pool 54.65% <70.52%> (+0.02%) ⬆️
plugins-google-cloud-pubsub_grpc_handlebars 59.95% <70.52%> (+<0.01%) ⬆️
plugins-hapi_hono_ioredis 55.91% <70.52%> (+0.02%) ⬆️
plugins-jest_knex_langgraph 51.87% <70.52%> (+0.04%) ⬆️
plugins-ldapjs_light-my-request_limitd-client 53.58% <70.52%> (+0.03%) ⬆️
plugins-lodash_mariadb_memcached 54.37% <70.52%> (+0.03%) ⬆️
plugins-moleculer_mongodb_mongodb-core 57.45% <70.52%> (+0.01%) ⬆️
plugins-mongoose_multer_mysql 54.85% <70.52%> (+0.02%) ⬆️
plugins-mysql2_nats_node-serialize 56.38% <70.52%> (+0.02%) ⬆️
plugins-opensearch_passport-http_pino 55.25% <70.52%> (+0.02%) ⬆️
plugins-postgres_process_pug 54.44% <70.52%> (+0.03%) ⬆️
plugins-redis_router_sequelize 57.24% <70.52%> (+0.01%) ⬆️
plugins-test-and-upstream-rhea_undici_url 57.11% <70.52%> (+0.03%) ⬆️
plugins-valkey_vm_winston 54.01% <70.52%> (+0.03%) ⬆️
plugins-ws 54.99% <70.52%> (+0.03%) ⬆️
profiling 58.30% <70.52%> (+0.01%) ⬆️
serverless-aws-sdk-aws-sdk 50.83% <70.52%> (+0.04%) ⬆️
serverless-aws-sdk-bedrockruntime 50.83% <70.52%> (+0.04%) ⬆️
serverless-aws-sdk-client 52.16% <70.52%> (+0.04%) ⬆️
serverless-aws-sdk-dynamodb 51.87% <70.52%> (+0.04%) ⬆️
serverless-aws-sdk-eventbridge 46.54% <70.52%> (+0.06%) ⬆️
serverless-aws-sdk-kinesis 54.85% <70.52%> (+0.02%) ⬆️
serverless-aws-sdk-lambda 52.94% <70.52%> (+0.03%) ⬆️
serverless-aws-sdk-s3 51.66% <70.52%> (+0.04%) ⬆️
serverless-aws-sdk-serverless-peer-service 54.87% <70.52%> (+0.02%) ⬆️
serverless-aws-sdk-sns 55.59% <70.52%> (+0.02%) ⬆️
serverless-aws-sdk-sqs 56.01% <70.52%> (-0.04%) ⬇️
serverless-aws-sdk-stepfunctions 51.43% <70.52%> (+0.04%) ⬆️
serverless-aws-sdk-util 48.64% <70.52%> (+0.06%) ⬆️
serverless-bucket-0 55.30% <70.52%> (+0.07%) ⬆️
serverless-bucket-1 56.12% <70.52%> (+0.02%) ⬆️
test-optimization-cucumber 72.98% <22.22%> (+0.01%) ⬆️
test-optimization-cypress 66.41% <0.00%> (+0.05%) ⬆️
test-optimization-jest 74.35% <71.57%> (-0.06%) ⬇️
test-optimization-mocha 74.72% <71.57%> (+0.03%) ⬆️
test-optimization-playwright-playwright-atr 61.42% <0.00%> (-0.02%) ⬇️
test-optimization-playwright-playwright-efd 61.62% <0.00%> (-0.02%) ⬇️
test-optimization-playwright-playwright-final-status 61.59% <0.00%> (-0.02%) ⬇️
test-optimization-playwright-playwright-impacted-tests 61.31% <0.00%> (-0.03%) ⬇️
test-optimization-playwright-playwright-reporting 61.20% <0.00%> (+0.05%) ⬆️
test-optimization-playwright-playwright-test-management 62.15% <0.00%> (-0.07%) ⬇️
test-optimization-playwright-playwright-test-span 61.34% <0.00%> (-0.07%) ⬇️
test-optimization-selenium 60.73% <0.00%> (-0.17%) ⬇️
test-optimization-testopt 59.26% <70.52%> (+0.15%) ⬆️
test-optimization-vitest 71.29% <22.22%> (+<0.01%) ⬆️

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 Jul 16, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-07-16 13:28:30

Comparing candidate commit ce6b6c9 in PR branch leo.romanovsky/ffl-2697-nodejs-agentless-narrative with baseline commit 76d4d45 in branch master.

📊 Benchmarking dashboard

Found 0 performance improvements and 0 performance regressions! Performance is the same for 2313 metrics, 45 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-24

  • unstable execution_time [-212.225ms; +198.817ms] or [-8.001%; +7.496%]

scenario:appsec-appsec-enabled-26

  • unstable execution_time [-232.528ms; +241.436ms] or [-9.083%; +9.431%]

scenario:appsec-appsec-enabled-with-attacks-24

  • unstable execution_time [-165.861ms; +155.604ms] or [-5.368%; +5.036%]

scenario:appsec-appsec-enabled-with-attacks-26

  • unstable execution_time [-182.977ms; +138.553ms] or [-6.351%; +4.809%]

scenario:appsec-control-24

  • unstable execution_time [-114.180ms; +117.352ms] or [-9.216%; +9.472%]

scenario:appsec-control-26

  • unstable execution_time [-122.007ms; +139.303ms] or [-9.872%; +11.272%]

scenario:appsec-iast-no-vulnerability-control-20

  • unstable execution_time [-8.249ms; +18.119ms] or [-3.203%; +7.036%]

scenario:appsec-iast-with-vulnerability-iast-enabled-default-config-20

  • unstable execution_time [-25.854ms; +29.188ms] or [-4.707%; +5.314%]

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

  • unstable cpu_user_time [-1713.103ms; +574.122ms] or [-20.645%; +6.919%]
  • unstable execution_time [-1773.127ms; +627.064ms] or [-19.682%; +6.961%]
  • unstable instructions [-14.6G instructions; +4.8G instructions] or [-21.574%; +7.124%]
  • unstable throughput [-174.549op/s; +462.825op/s] or [-4.769%; +12.644%]

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

  • unstable cpu_user_time [-2579.340ms; +4148.890ms] or [-27.004%; +43.436%]
  • unstable execution_time [-2596.590ms; +4155.649ms] or [-25.265%; +40.434%]
  • unstable instructions [-23.1G instructions; +36.9G instructions] or [-28.943%; +46.341%]
  • unstable max_rss_usage [-8.416MB; +12.316MB] or [-5.275%; +7.718%]
  • unstable throughput [-815.610op/s; +507.710op/s] or [-25.302%; +15.750%]

scenario:debugger-line-probe-with-snapshot-minimal-26

  • unstable cpu_user_time [-4592.414ms; +3045.684ms] or [-41.424%; +27.473%]
  • unstable execution_time [-4614.655ms; +3040.168ms] or [-39.024%; +25.709%]
  • unstable instructions [-40.6G instructions; +27.0G instructions] or [-43.454%; +28.878%]
  • unstable max_rss_usage [-15.126MB; +8.822MB] or [-9.169%; +5.347%]
  • unstable throughput [-590.469op/s; +909.107op/s] or [-20.222%; +31.134%]

scenario:debugger-line-probe-without-snapshot-24

  • unstable cpu_user_time [-2.055s; +4.406s] or [-23.173%; +49.692%]
  • unstable execution_time [-2.036s; +4.439s] or [-21.250%; +46.323%]
  • unstable instructions [-17.5G instructions; +37.5G instructions] or [-24.063%; +51.636%]
  • unstable max_rss_usage [-8.513MB; +17.986MB] or [-5.339%; +11.280%]
  • unstable throughput [-1183.599op/s; +539.753op/s] or [-33.755%; +15.393%]

scenario:debugger-line-probe-without-snapshot-26

  • unstable cpu_user_time [-4556.865ms; +3018.901ms] or [-41.147%; +27.260%]
  • unstable execution_time [-4614.090ms; +3042.441ms] or [-39.012%; +25.724%]
  • unstable instructions [-40.7G instructions; +27.0G instructions] or [-43.605%; +28.972%]
  • unstable max_rss_usage [-16.164MB; +9.726MB] or [-9.855%; +5.930%]
  • unstable throughput [-605.127op/s; +895.186op/s] or [-20.656%; +30.557%]

scenario:dogstatsd-with-tags-20

  • unstable cpu_user_time [-144.263ms; +420.551ms] or [-2.897%; +8.445%]
  • unstable execution_time [-148.508ms; +425.557ms] or [-2.936%; +8.413%]
  • unstable throughput [-143833.057op/s; +57590.984op/s] or [-8.705%; +3.486%]

scenario:plugin-aws-sdk-lambda-inject-with-context-24

  • unstable cpu_user_time [-228.001ms; +417.263ms] or [-5.723%; +10.473%]
  • unstable execution_time [-227.980ms; +419.972ms] or [-5.690%; +10.482%]
  • unstable throughput [-49153.475op/s; +27668.959op/s] or [-9.744%; +5.485%]

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

  • unstable max_rss_usage [-18.930MB; +29.429MB] or [-5.054%; +7.857%]

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

  • unstable max_rss_usage [-10.109MB; +4.449MB] or [-7.784%; +3.426%]

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

  • unstable max_rss_usage [-24.866MB; +14.673MB] or [-11.245%; +6.636%]

scenario:plugin-graphql-long-with-depth-on-max-20

  • unstable cpu_user_time [-707.489ms; +653.243ms] or [-5.507%; +5.085%]
  • unstable execution_time [-714.173ms; +666.525ms] or [-5.439%; +5.076%]
  • unstable throughput [-3.096op/s; +3.295op/s] or [-5.052%; +5.377%]

scenario:test-optimization-large-suite-20

  • unstable max_rss_usage [-4.193MB; +7.767MB] or [-5.166%; +9.570%]

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.

1 participant