Skip to content

Conversation

@danielsn
Copy link
Contributor

What does this PR do?

Makes mime type optional for files

Motivation

Allows clients to use it or not as they see fit.

Additional Notes

I made it 0 for the None case so that if you default init the enum in C it works as expected.

How to test the change?

Describe here in detail how the change can be validated.

@danielsn danielsn requested a review from a team as a code owner January 29, 2026 21:35
@github-actions
Copy link

github-actions bot commented Jan 29, 2026

📚 Documentation Check Results

⚠️ 584 documentation warning(s) found

📦 libdd-profiling - 584 warning(s)


Updated: 2026-01-29 21:58:15 UTC | Commit: 505b73f | missing-docs job results

@github-actions
Copy link

github-actions bot commented Jan 29, 2026

🔒 Cargo Deny Results

⚠️ 5 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-profiling - 5 error(s)

Show output
error[vulnerability]: Lenient `hyper` header parsing of `Content-Length` could allow request smuggling
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:99:1
   │
99 │ hyper 0.10.16 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2021-0078
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2021-0078
   ├ `hyper`'s HTTP header parser accepted, according to RFC 7230, illegal contents inside `Content-Length` headers.
     Due to this, upstream HTTP proxies that ignore the header may still forward them along if it chooses to ignore the error.
     
     To be vulnerable, `hyper` must be used as an HTTP/1 server and using an HTTP proxy upstream that ignores the header's contents
     but still forwards it. Due to all the factors that must line up, an attack exploiting this vulnerability is unlikely.
   ├ Announcement: https://github.com/hyperium/hyper/security/advisories/GHSA-f3pg-qwvg-p99c
   ├ Solution: Upgrade to >=0.14.10 (try `cargo update -p hyper`)
   ├ hyper v0.10.16
     ├── iron v0.6.1
     │   └── multipart v0.18.0
     │       └── libdd-profiling v1.0.0
     │           └── (dev) libdd-profiling v1.0.0 (*)
     ├── multipart v0.18.0 (*)
     └── nickel v0.11.0
         └── multipart v0.18.0 (*)

error[vulnerability]: Integer overflow in `hyper`'s parsing of the `Transfer-Encoding` header leads to data loss
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:99:1
   │
99 │ hyper 0.10.16 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2021-0079
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2021-0079
   ├ When decoding chunk sizes that are too large, `hyper`'s code would encounter an integer overflow. Depending on the situation,
     this could lead to data loss from an incorrect total size, or in rarer cases, a request smuggling attack.
     
     To be vulnerable, you must be using `hyper` for any HTTP/1 purpose, including as a client or server, and consumers must send
     requests or responses that specify a chunk size greater than 18 exabytes. For a possible request smuggling attack to be possible,
     any upstream proxies must accept a chunk size greater than 64 bits.
   ├ Announcement: https://github.com/hyperium/hyper/security/advisories/GHSA-5h46-h7hh-c6x9
   ├ Solution: Upgrade to >=0.14.10 (try `cargo update -p hyper`)
   ├ hyper v0.10.16
     ├── iron v0.6.1
     │   └── multipart v0.18.0
     │       └── libdd-profiling v1.0.0
     │           └── (dev) libdd-profiling v1.0.0 (*)
     ├── multipart v0.18.0 (*)
     └── nickel v0.11.0
         └── multipart v0.18.0 (*)

error[vulnerability]: `idna` accepts Punycode labels that do not produce any non-ASCII when decoded
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:115:1
    │
115 │ idna 0.1.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2024-0421
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2024-0421
    ├ `idna` 0.5.0 and earlier accepts Punycode labels that do not produce any non-ASCII output, which means that either ASCII labels or the empty root label can be masked such that they appear unequal without IDNA processing or when processed with a different implementation and equal when processed with `idna` 0.5.0 or earlier.
      
      Concretely, `example.org` and `xn--example-.org` become equal after processing by `idna` 0.5.0 or earlier. Also, `example.org.xn--` and `example.org.` become equal after processing by `idna` 0.5.0 or earlier.
      
      In applications using `idna` (but not in `idna` itself) this may be able to lead to privilege escalation when host name comparison is part of a privilege check and the behavior is combined with a client that resolves domains with such labels instead of treating them as errors that preclude DNS resolution / URL fetching and with the attacker managing to introduce a DNS entry (and TLS certificate) for an `xn--`-masked name that turns into the name of the target when processed by `idna` 0.5.0 or earlier.
      
      ## Remedy
      
      Upgrade to `idna` 1.0.3 or later, if depending on `idna` directly, or to `url` 2.5.4 or later, if depending on `idna` via `url`. (This issue was fixed in `idna` 1.0.0, but versions earlier than 1.0.3 are not recommended for other reasons.)
      
      When upgrading, please take a moment to read about [alternative Unicode back ends for `idna`](https://docs.rs/crate/idna_adapter/latest).
      
      If you are using Rust earlier than 1.81 in combination with SQLx 0.8.2 or earlier, please also read an [issue](https://github.com/servo/rust-url/issues/992) about combining them with `url` 2.5.4 and `idna` 1.0.3.
      
      ## Additional information
      
      This issue resulted from `idna` 0.5.0 and earlier implementing the UTS 46 specification literally on this point and the specification having this bug. The specification bug has been fixed in [revision 33 of UTS 46](https://www.unicode.org/reports/tr46/tr46-33.html#Modifications).
      
      ## Acknowledgements
      
      Thanks to kageshiron for recognizing the security implications of this behavior.
    ├ Announcement: https://bugzilla.mozilla.org/show_bug.cgi?id=1887898
    ├ Solution: Upgrade to >=1.0.0 (try `cargo update -p idna`)
    ├ idna v0.1.5
      └── url v1.7.2
          ├── hyper v0.10.16
          │   ├── iron v0.6.1
          │   │   └── multipart v0.18.0
          │   │       └── libdd-profiling v1.0.0
          │   │           └── (dev) libdd-profiling v1.0.0 (*)
          │   ├── multipart v0.18.0 (*)
          │   └── nickel v0.11.0
          │       └── multipart v0.18.0 (*)
          ├── iron v0.6.1 (*)
          ├── nickel v0.11.0 (*)
          └── tiny_http v0.6.4
              └── multipart v0.18.0 (*)

error[unmaintained]: multipart is Unmaintained
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:156:1
    │
156 │ multipart 0.18.0 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unmaintained advisory detected
    │
    ├ ID: RUSTSEC-2023-0050
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2023-0050
    ├ The `multipart` crate is unmaintained. The author has archived the github
      repository.
      
      Alternatives:
      
      - [multer](https://crates.io/crates/multer)
      - [multiparty](https://crates.io/crates/multiparty)
    ├ Solution: No safe upgrade is available!
    ├ multipart v0.18.0
      └── libdd-profiling v1.0.0
          └── (dev) libdd-profiling v1.0.0 (*)

error[vulnerability]: Potential segfault in the time crate
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:262:1
    │
262 │ time 0.1.45 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2020-0071
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2020-0071
    ├ ### Impact
      
      The affected functions set environment variables without synchronization. On Unix-like operating systems, this can crash in multithreaded programs. Programs may segfault due to dereferencing a dangling pointer if an environment variable is read in a different thread than the affected functions. This may occur without the user's knowledge, notably in the Rust standard library or third-party libraries.
      
      The affected functions from time 0.2.7 through 0.2.22 are:
      
      - `time::UtcOffset::local_offset_at`
      - `time::UtcOffset::try_local_offset_at`
      - `time::UtcOffset::current_local_offset`
      - `time::UtcOffset::try_current_local_offset`
      - `time::OffsetDateTime::now_local`
      - `time::OffsetDateTime::try_now_local`
      
      The affected functions in time 0.1 (all versions) are:
      
      - `time::at_utc`
      - `time::at`
      - `time::now`
      - `time::tzset`
      
      Non-Unix targets (including Windows and wasm) are unaffected.
      
      ### Patches
      
      Pending a proper fix, the internal method that determines the local offset has been modified to always return `None` on the affected operating systems. This has the effect of returning an `Err` on the `try_*` methods and `UTC` on the non-`try_*` methods.
      
      Users and library authors with time in their dependency tree should perform `cargo update`, which will pull in the updated, unaffected code.
      
      Users of time 0.1 do not have a patch and should upgrade to an unaffected version: time 0.2.23 or greater or the 0.3 series.
      
      ### Workarounds
      
      A possible workaround for crates affected through the transitive dependency in `chrono`, is to avoid using the default `oldtime` feature dependency of the `chrono` crate by disabling its `default-features` and manually specifying the required features instead.
      
      #### Examples:
      
      `Cargo.toml`:  
      
      ```toml
      chrono = { version = "0.4", default-features = false, features = ["serde"] }
      ```
      
      ```toml
      chrono = { version = "0.4.22", default-features = false, features = ["clock"] }
      ```
      
      Commandline:  
      
      ```bash
      cargo add chrono --no-default-features -F clock
      ```
      
      Sources:  
       - [chronotope/chrono#602 (comment)](https://github.com/chronotope/chrono/issues/602#issuecomment-1242149249)  
       - [vityafx/serde-aux#21](https://github.com/vityafx/serde-aux/issues/21)
    ├ Announcement: https://github.com/time-rs/time/issues/293
    ├ Solution: Upgrade to >=0.2.23 (try `cargo update -p time`)
    ├ time v0.1.45
      ├── hyper v0.10.16
      │   ├── iron v0.6.1
      │   │   └── multipart v0.18.0
      │   │       └── libdd-profiling v1.0.0
      │   │           └── (dev) libdd-profiling v1.0.0 (*)
      │   ├── multipart v0.18.0 (*)
      │   └── nickel v0.11.0
      │       └── multipart v0.18.0 (*)
      └── nickel v0.11.0 (*)

advisories FAILED, bans ok, sources ok

Updated: 2026-01-29 21:57:33 UTC | Commit: 505b73f | dependency-check job results

@danielsn danielsn force-pushed the dsn/optional-mime-type branch from 45141ac to 3671a27 Compare January 29, 2026 21:46
@danielsn danielsn added the profiling Relates to the profiling* modules. label Jan 29, 2026
@danielsn danielsn changed the title feat(profiling): make MIME type optional feat(profiling)!: make MIME type optional Jan 29, 2026
@codecov-commenter
Copy link

Codecov Report

❌ Patch coverage is 95.23810% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 71.03%. Comparing base (488418a) to head (3671a27).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1492      +/-   ##
==========================================
- Coverage   71.04%   71.03%   -0.01%     
==========================================
  Files         422      422              
  Lines       68697    68713      +16     
==========================================
+ Hits        48804    48810       +6     
- Misses      19893    19903      +10     
Components Coverage Δ
libdd-crashtracker 61.28% <ø> (+0.01%) ⬆️
libdd-crashtracker-ffi 16.50% <ø> (ø)
libdd-alloc 98.73% <ø> (ø)
libdd-data-pipeline 86.84% <ø> (ø)
libdd-data-pipeline-ffi 78.57% <ø> (ø)
libdd-common 80.97% <ø> (ø)
libdd-common-ffi 74.54% <ø> (ø)
libdd-telemetry 59.82% <ø> (ø)
libdd-telemetry-ffi 21.17% <ø> (ø)
libdd-dogstatsd-client 83.75% <ø> (ø)
datadog-ipc 82.60% <ø> (-0.19%) ⬇️
libdd-profiling 81.56% <95.23%> (+0.07%) ⬆️
libdd-profiling-ffi 64.71% <ø> (ø)
datadog-sidecar 34.94% <ø> (ø)
datdog-sidecar-ffi 10.25% <ø> (ø)
spawn-worker 55.18% <ø> (ø)
libdd-tinybytes 93.43% <ø> (ø)
libdd-trace-normalization 82.33% <ø> (ø)
libdd-trace-obfuscation 94.17% <ø> (ø)
libdd-trace-protobuf 61.18% <ø> (ø)
libdd-trace-utils 89.45% <ø> (ø)
datadog-tracer-flare 63.49% <ø> (ø)
libdd-log 75.57% <ø> (ø)
🚀 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
Copy link

pr-commenter bot commented Jan 29, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-01-29 22:02:08

Comparing candidate commit 3671a27 in PR branch dsn/optional-mime-type with baseline commit 488418a in branch main.

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

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 18.099µs 26.830µs ± 10.323µs 18.738µs ± 0.518µs 35.610µs 44.012µs 54.230µs 79.545µs 324.50% 1.155 2.252 38.38% 0.730µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [25.399µs; 28.261µs] or [-5.332%; +5.332%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 143.722µs 145.813µs ± 1.934µs 145.538µs ± 0.534µs 146.163µs 147.255µs 152.912µs 165.651µs 13.82% 6.827 60.459 1.32% 0.137µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [145.545µs; 146.081µs] or [-0.184%; +0.184%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2597 execution_time 12.723ms 13.017ms ± 0.149ms 13.072ms ± 0.086ms 13.123ms 13.207ms 13.328ms 13.411ms 2.60% -0.346 -0.833 1.14% 0.011ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [12.996ms; 13.037ms] or [-0.159%; +0.159%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 204.614µs 205.672µs ± 0.637µs 205.566µs ± 0.461µs 206.104µs 206.902µs 207.212µs 207.476µs 0.93% 0.601 -0.281 0.31% 0.045µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4819830.188op/s 4862166.935op/s ± 15027.540op/s 4864626.644op/s ± 10906.228op/s 4873929.884op/s 4882160.356op/s 4886168.242op/s 4887242.079op/s 0.46% -0.589 -0.302 0.31% 1062.608op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.605µs 18.678µs ± 0.046µs 18.665µs ± 0.018µs 18.695µs 18.760µs 18.848µs 18.881µs 1.16% 1.801 4.066 0.25% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 52963011.172op/s 53539635.047op/s ± 131292.612op/s 53576382.441op/s ± 53009.374op/s 53621769.985op/s 53673721.775op/s 53732646.199op/s 53749383.932op/s 0.32% -1.780 3.973 0.24% 9283.790op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.736µs 10.824µs ± 0.028µs 10.826µs ± 0.016µs 10.841µs 10.865µs 10.879µs 10.906µs 0.74% -0.409 0.447 0.26% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 91695341.877op/s 92390495.842op/s ± 240057.702op/s 92370447.804op/s ± 140327.541op/s 92527568.938op/s 92813730.571op/s 93004174.384op/s 93146613.481op/s 0.84% 0.426 0.463 0.26% 16974.643op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [205.583µs; 205.760µs] or [-0.043%; +0.043%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [4860084.262op/s; 4864249.607op/s] or [-0.043%; +0.043%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.671µs; 18.684µs] or [-0.034%; +0.034%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [53521439.154op/s; 53557830.941op/s] or [-0.034%; +0.034%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.820µs; 10.828µs] or [-0.036%; +0.036%] None None None
normalization/normalize_name/normalize_name/good throughput [92357226.154op/s; 92423765.531op/s] or [-0.036%; +0.036%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 88.735µs 88.919µs ± 0.178µs 88.893µs ± 0.043µs 88.950µs 89.043µs 89.281µs 91.162µs 2.55% 10.097 123.400 0.20% 0.013µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [88.894µs; 88.944µs] or [-0.028%; +0.028%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 10.609ms 10.641ms ± 0.012ms 10.639ms ± 0.008ms 10.649ms 10.664ms 10.676ms 10.682ms 0.40% 0.519 0.404 0.11% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [10.639ms; 10.643ms] or [-0.016%; +0.016%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 535.125µs 536.635µs ± 1.149µs 536.302µs ± 0.470µs 537.101µs 538.641µs 539.844µs 544.402µs 1.51% 2.516 10.905 0.21% 0.081µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1836877.697op/s 1863472.370op/s ± 3969.770op/s 1864620.951op/s ± 1634.795op/s 1866075.033op/s 1867446.587op/s 1868032.611op/s 1868722.056op/s 0.22% -2.475 10.540 0.21% 280.705op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 381.358µs 382.126µs ± 0.301µs 382.100µs ± 0.185µs 382.294µs 382.662µs 382.994µs 383.054µs 0.25% 0.449 0.143 0.08% 0.021µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2610598.873op/s 2616937.895op/s ± 2064.014op/s 2617114.450op/s ± 1268.178op/s 2618313.326op/s 2620095.121op/s 2620871.813op/s 2622205.911op/s 0.19% -0.444 0.137 0.08% 145.948op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.564µs 190.160µs ± 0.300µs 190.189µs ± 0.270µs 190.406µs 190.611µs 190.689µs 190.755µs 0.30% -0.022 -1.254 0.16% 0.021µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5242320.907op/s 5258731.846op/s ± 8305.691op/s 5257931.540op/s ± 7473.997op/s 5266602.509op/s 5271033.716op/s 5273254.191op/s 5275263.236op/s 0.33% 0.026 -1.254 0.16% 587.301op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.627µs 36.849µs ± 0.110µs 36.864µs ± 0.090µs 36.943µs 36.993µs 37.024µs 37.046µs 0.49% -0.341 -1.122 0.30% 0.008µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26993511.212op/s 27138018.374op/s ± 81371.820op/s 27126625.955op/s ± 66109.171op/s 27213914.036op/s 27278414.236op/s 27295840.969op/s 27302562.419op/s 0.65% 0.348 -1.118 0.30% 5753.857op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.959µs 46.108µs ± 0.109µs 46.097µs ± 0.040µs 46.141µs 46.222µs 46.286µs 47.338µs 2.69% 7.341 80.057 0.24% 0.008µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21124618.349op/s 21688295.810op/s ± 50302.821op/s 21693498.109op/s ± 18836.700op/s 21710119.371op/s 21737622.191op/s 21752410.283op/s 21758392.393op/s 0.30% -7.144 77.091 0.23% 3556.947op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [536.476µs; 536.794µs] or [-0.030%; +0.030%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1862922.198op/s; 1864022.542op/s] or [-0.030%; +0.030%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [382.084µs; 382.168µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2616651.842op/s; 2617223.947op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.119µs; 190.202µs] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5257580.757op/s; 5259882.935op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.834µs; 36.864µs] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27126741.022op/s; 27149295.726op/s] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.093µs; 46.123µs] or [-0.033%; +0.033%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21681324.323op/s; 21695267.297op/s] or [-0.032%; +0.032%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 540.559µs 541.356µs ± 0.388µs 541.301µs ± 0.217µs 541.570µs 541.912µs 542.334µs 544.305µs 0.55% 2.584 15.988 0.07% 0.027µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [541.302µs; 541.410µs] or [-0.010%; +0.010%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 240.739ns 252.715ns ± 13.631ns 246.384ns ± 4.193ns 256.880ns 285.827ns 292.526ns 295.194ns 19.81% 1.546 1.341 5.38% 0.964ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [250.825ns; 254.604ns] or [-0.748%; +0.748%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.977µs 5.051µs ± 0.041µs 5.060µs ± 0.038µs 5.081µs 5.103µs 5.106µs 5.113µs 1.04% -0.311 -1.292 0.80% 0.003µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.045µs; 5.057µs] or [-0.111%; +0.111%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 14.573ms 14.648ms ± 0.035ms 14.647ms ± 0.018ms 14.663ms 14.704ms 14.767ms 14.817ms 1.16% 1.434 4.228 0.24% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.643ms; 14.653ms] or [-0.033%; +0.033%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 160.656µs 161.676µs ± 0.277µs 161.659µs ± 0.128µs 161.795µs 162.076µs 162.422µs 163.757µs 1.30% 2.055 16.154 0.17% 0.020µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [161.637µs; 161.714µs] or [-0.024%; +0.024%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.233µs 3.195µs ± 1.399µs 2.982µs ± 0.032µs 3.018µs 3.663µs 13.655µs 14.911µs 400.12% 7.334 55.177 43.69% 0.099µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.001µs; 3.389µs] or [-6.070%; +6.070%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 33.152µs 33.736µs ± 0.991µs 33.275µs ± 0.057µs 33.414µs 35.847µs 35.930µs 37.139µs 11.61% 1.733 1.168 2.93% 0.070µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [33.599µs; 33.874µs] or [-0.407%; +0.407%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 188.984ns 191.428ns ± 2.068ns 191.227ns ± 1.685ns 192.732ns 194.755ns 197.307ns 197.599ns 3.33% 0.672 -0.347 1.08% 0.146ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [191.142ns; 191.715ns] or [-0.150%; +0.150%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.369µs 2.405µs ± 0.016µs 2.402µs ± 0.009µs 2.414µs 2.440µs 2.446µs 2.485µs 3.43% 1.003 2.808 0.68% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.403µs; 2.407µs] or [-0.095%; +0.095%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 49.776ms 50.312ms ± 1.360ms 50.130ms ± 0.067ms 50.218ms 50.377ms 57.098ms 65.556ms 30.77% 9.152 89.345 2.70% 0.096ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [50.124ms; 50.501ms] or [-0.375%; +0.375%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.891µs 3.912µs ± 0.003µs 3.911µs ± 0.001µs 3.913µs 3.916µs 3.920µs 3.923µs 0.29% -0.863 13.617 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 254907594.253op/s 255642433.582op/s ± 186996.089op/s 255658979.520op/s ± 96404.327op/s 255746430.801op/s 255855885.316op/s 255900490.878op/s 256976608.395op/s 0.52% 0.895 13.808 0.07% 13222.620op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.031µs 77.595µs ± 0.348µs 77.547µs ± 0.206µs 77.787µs 78.209µs 78.380µs 78.981µs 1.85% 0.756 0.510 0.45% 0.025µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12661241.897op/s 12887607.010op/s ± 57623.447op/s 12895435.768op/s ± 34336.325op/s 12928100.196op/s 12964903.085op/s 12974930.798op/s 12981714.701op/s 0.67% -0.730 0.431 0.45% 4074.593op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 70.645µs 71.009µs ± 0.275µs 70.936µs ± 0.222µs 71.181µs 71.460µs 71.894µs 71.992µs 1.49% 0.819 0.819 0.39% 0.019µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13890444.586op/s 14082965.225op/s ± 54374.510op/s 14097236.942op/s ± 43974.574op/s 14114912.018op/s 14153711.850op/s 14155100.953op/s 14155334.619op/s 0.41% -0.794 0.745 0.39% 3844.858op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.892µs 3.913µs ± 0.003µs 3.913µs ± 0.001µs 3.915µs 3.918µs 3.919µs 3.923µs 0.27% -1.375 11.662 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254887055.417op/s 255543339.516op/s ± 192723.068op/s 255565409.222op/s ± 97407.133op/s 255644865.683op/s 255797283.657op/s 255848080.928op/s 256914399.761op/s 0.53% 1.401 11.862 0.08% 13627.579op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 67.472µs 67.981µs ± 0.303µs 67.972µs ± 0.203µs 68.177µs 68.490µs 68.662µs 69.460µs 2.19% 0.781 1.805 0.44% 0.021µs 1 200
credit_card/is_card_number/378282246310005 throughput 14396692.496op/s 14710331.019op/s ± 65352.927op/s 14711925.619op/s ± 43977.057op/s 14755713.677op/s 14809921.621op/s 14815693.897op/s 14821028.075op/s 0.74% -0.740 1.620 0.44% 4621.150op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 44.553µs 45.179µs ± 0.221µs 45.225µs ± 0.164µs 45.369µs 45.479µs 45.511µs 45.527µs 0.67% -0.520 -0.543 0.49% 0.016µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21965085.606op/s 22134623.913op/s ± 108404.742op/s 22111832.399op/s ± 79702.904op/s 22218686.539op/s 22338280.344op/s 22390276.376op/s 22444934.840op/s 1.51% 0.537 -0.516 0.49% 7665.373op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.028µs 6.040µs ± 0.020µs 6.035µs ± 0.003µs 6.037µs 6.074µs 6.109µs 6.176µs 2.34% 4.451 22.717 0.33% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 161911829.872op/s 165573869.845op/s ± 536813.955op/s 165703280.928op/s ± 71898.117op/s 165775767.815op/s 165843640.496op/s 165873510.332op/s 165882836.062op/s 0.11% -4.404 22.181 0.32% 37958.479op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.891µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.916µs 3.920µs 3.920µs 0.22% -1.423 14.179 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255076827.543op/s 255623774.409op/s ± 187391.164op/s 255642443.973op/s ± 107825.341op/s 255728826.181op/s 255826111.786op/s 255879914.173op/s 257015491.848op/s 0.54% 1.455 14.421 0.07% 13250.556op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.166µs 65.594µs ± 0.077µs 65.587µs ± 0.046µs 65.641µs 65.710µs 65.780µs 65.806µs 0.33% -0.603 3.928 0.12% 0.005µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15196143.477op/s 15245349.081op/s ± 17947.382op/s 15246914.817op/s ± 10608.239op/s 15256366.411op/s 15270935.441op/s 15283438.423op/s 15345403.981op/s 0.65% 0.622 4.024 0.12% 1269.072op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 52.963µs 53.049µs ± 0.044µs 53.047µs ± 0.018µs 53.066µs 53.098µs 53.122µs 53.490µs 0.84% 5.034 49.823 0.08% 0.003µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18694977.787op/s 18850439.024op/s ± 15493.722op/s 18851172.635op/s ± 6260.372op/s 18857069.054op/s 18870964.191op/s 18877204.140op/s 18881001.936op/s 0.16% -4.969 48.992 0.08% 1095.572op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.895µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.913µs 3.916µs 3.917µs 3.918µs 0.18% -0.994 7.214 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255199999.521op/s 255646554.158op/s ± 171249.753op/s 255648905.638op/s ± 107572.006op/s 255760867.192op/s 255872383.829op/s 255927928.953op/s 256745779.390op/s 0.43% 1.011 7.325 0.07% 12109.186op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 49.738µs 49.815µs ± 0.034µs 49.817µs ± 0.023µs 49.836µs 49.878µs 49.888µs 49.909µs 0.19% 0.069 -0.333 0.07% 0.002µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 20036396.463op/s 20074435.914op/s ± 13710.996op/s 20073543.070op/s ± 9297.799op/s 20083782.854op/s 20097643.853op/s 20101430.339op/s 20105251.492op/s 0.16% -0.066 -0.335 0.07% 969.514op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 44.784µs 45.195µs ± 0.174µs 45.211µs ± 0.131µs 45.336µs 45.458µs 45.516µs 45.592µs 0.84% -0.203 -0.752 0.38% 0.012µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21933568.556op/s 22126869.804op/s ± 85280.499op/s 22118364.436op/s ± 63959.895op/s 22188628.346op/s 22271351.113op/s 22304808.594op/s 22329580.790op/s 0.95% 0.217 -0.746 0.38% 6030.242op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.029µs 6.036µs ± 0.005µs 6.035µs ± 0.003µs 6.038µs 6.043µs 6.049µs 6.087µs 0.87% 4.458 36.925 0.09% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 164285290.082op/s 165682546.930op/s ± 150014.753op/s 165713721.099op/s ± 72827.796op/s 165769731.038op/s 165839436.971op/s 165857368.457op/s 165861283.512op/s 0.09% -4.406 36.270 0.09% 10607.645op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ throughput [255616517.723op/s; 255668349.442op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [77.547µs; 77.644µs] or [-0.062%; +0.062%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12879620.955op/s; 12895593.066op/s] or [-0.062%; +0.062%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [70.971µs; 71.047µs] or [-0.054%; +0.054%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14075429.441op/s; 14090501.009op/s] or [-0.054%; +0.054%] None None None
credit_card/is_card_number/37828224631 execution_time [3.913µs; 3.914µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255516629.952op/s; 255570049.079op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [67.939µs; 68.023µs] or [-0.062%; +0.062%] None None None
credit_card/is_card_number/378282246310005 throughput [14701273.732op/s; 14719388.306op/s] or [-0.062%; +0.062%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.149µs; 45.210µs] or [-0.068%; +0.068%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [22119600.058op/s; 22149647.767op/s] or [-0.068%; +0.068%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.037µs; 6.042µs] or [-0.046%; +0.046%] None None None
credit_card/is_card_number/x371413321323331 throughput [165499472.593op/s; 165648267.096op/s] or [-0.045%; +0.045%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.912µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255597803.796op/s; 255649745.022op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.583µs; 65.605µs] or [-0.016%; +0.016%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15242861.746op/s; 15247836.415op/s] or [-0.016%; +0.016%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.043µs; 53.055µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18848291.743op/s; 18852586.305op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255622820.589op/s; 255670287.727op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [49.810µs; 49.819µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [20072535.702op/s; 20076336.126op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.170µs; 45.219µs] or [-0.053%; +0.053%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [22115050.747op/s; 22138688.861op/s] or [-0.053%; +0.053%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.035µs; 6.036µs] or [-0.013%; +0.013%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165661756.328op/s; 165703337.532op/s] or [-0.013%; +0.013%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3671a27 1769723158 dsn/optional-mime-type
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 3.933ms 3.941ms ± 0.007ms 3.940ms ± 0.002ms 3.942ms 3.946ms 3.950ms 4.033ms 2.36% 10.988 139.894 0.18% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [3.940ms; 3.942ms] or [-0.025%; +0.025%] None None None

Baseline

Omitted due to size.

Comment on lines 422 to 437
for file in additional_files {
let mut encoder = Compressor::<DefaultProfileCodec>::try_new(
(file.bytes.len() >> 3).next_power_of_two(),
10 * 1024 * 1024,
Profile::COMPRESSION_LEVEL,
)
.context("failed to create compressor")?;
encoder.write_all(file.bytes)?;

form = form.part(
file.name.to_string(),
reqwest::multipart::Part::bytes(encoder.finish()?).file_name(file.name.to_string()),
);
let mut part =
reqwest::multipart::Part::bytes(encoder.finish()?).file_name(file.name.to_string());
if !matches!(file.mime, MimeType::None) {
part = part.mime_str(file.mime.as_str())?;
}
form = form.part(file.name.to_string(), part);
}
Copy link
Member

Choose a reason for hiding this comment

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

I'm still not convinced we're going the right direction here.

As per https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Type :

The HTTP Content-Type representation header is used to indicate the original media type of a resource before any content encoding is applied.

The Content-Type header differs from Content-Encoding in that Content-Encoding helps the recipient understand how to decode data to its original form.

and https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html?#field.content-encoding ...:

Content coding values indicate an encoding transformation that has been or can be applied to a representation. Content codings are primarily used to allow a representation to be compressed or otherwise usefully transformed without losing the identity of its underlying media type and without loss of information. Frequently, the representation is stored in coded form, transmitted directly, and only decoded by the final recipient.

but again I'm not sure this is the correct thing here.

In particular, I don't think "zstandard compression" is something we only do for transport here, since we store these files with this exact compression.

Another reason is -- if json should be content-type json even when compressed, why is the profile not application/protobuf too?


TL;DR: My suggestion is, let's not complicate until we figure out a clear reason to do so -- let's set everything to application/octet-stream and simplify the API and our code. Bonus point, this is one less API breaking change between libdatadog v26 and v27.

Copy link
Contributor

Choose a reason for hiding this comment

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

I did some reading and asked GPT about it too. I think these would be the correct headers to send for zstd compressed json:

Content-Type: application/json
Content-Encoding: zstd

The original PR @danielsn opened was to add a mime type because integration tests were failing: #1478. @danielsn, do you remember what test was failing specifically? In the vein of trying to solve problems, I think we should re-examine the original problem, but I believe @ivoanjo is right that application/octet-stream is a generic binary type for when you don't know or don't want to set one.

Copy link
Member

Choose a reason for hiding this comment

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

The key distinction here in the headers (and I was discussing this with @danielsn ) as well, is that Content-Encoding is not an allowed header in a multipart http file upload, as per https://datatracker.ietf.org/doc/html/rfc7578 :

4.8.  Other "Content-" Header Fields

   The multipart/form-data media type does not support any MIME header
   fields in parts other than Content-Type, Content-Disposition, and (in
   limited circumstances) Content-Transfer-Encoding.  Other header
   fields MUST NOT be included and MUST be ignored.

Perhaps Content-Transfer-Encoding could be used, but again, if the previous approach with application/octet-stream has been working fine + simplifies the API, and we're not even sure what a "more correct" solution would be, I'd suggest we go with the simplified take on this.

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

Labels

profiling Relates to the profiling* modules.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants