feat(data-pipeline): emit additional_metric_tags on OTLP span duration metric#2264
Conversation
…n metric PR #2170 added additional_metric_tags to ClientGroupedStats so tracers can attach extra key/value dimensions to stats aggregation. The OTLP metrics mapper (traces.span.sdk.metrics.duration) never surfaced them as data-point attributes, so consumers of the OTLP stats export lost those tags. Mirror the existing peer_tags handling to emit each tag as an attribute.
BenchmarksComparisonBenchmark execution time: 2026-07-22 17:14:45 Comparing candidate commit 12c32eb in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 24 metrics, 0 unstable metrics.
|
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | 12c32eb | 1784735074 | munir/otlp-additional-metric-tags |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| trace_buffer/1_senders/10us_delay | execution_time | 56.291ms | 56.571ms ± 0.153ms | 56.544ms ± 0.080ms | 56.649ms | 56.834ms | 56.928ms | 57.635ms | 1.93% | 2.061 | 10.534 | 0.27% | 0.011ms | 1 | 200 |
| trace_buffer/1_senders/10us_delay | throughput | 15615.588op/s | 15909.355op/s ± 42.781op/s | 15916.941op/s ± 22.540op/s | 15937.609op/s | 15959.706op/s | 15976.809op/s | 15988.443op/s | 0.45% | -1.995 | 9.965 | 0.27% | 3.025op/s | 1 | 200 |
| trace_buffer/1_senders/1us_delay | execution_time | 49.927ms | 50.079ms ± 0.036ms | 50.080ms ± 0.013ms | 50.090ms | 50.143ms | 50.200ms | 50.207ms | 0.25% | 0.436 | 3.224 | 0.07% | 0.003ms | 1 | 200 |
| trace_buffer/1_senders/1us_delay | throughput | 17925.753op/s | 17971.521op/s ± 12.966op/s | 17971.276op/s ± 4.627op/s | 17977.403op/s | 17989.821op/s | 17991.103op/s | 18026.412op/s | 0.31% | -0.425 | 3.228 | 0.07% | 0.917op/s | 1 | 200 |
| trace_buffer/1_senders/no_delay | execution_time | 329.009µs | 337.483µs ± 5.447µs | 336.660µs ± 1.589µs | 338.527µs | 342.952µs | 352.144µs | 395.477µs | 17.47% | 6.538 | 63.596 | 1.61% | 0.385µs | 1 | 200 |
| trace_buffer/1_senders/no_delay | throughput | 2275731.226op/s | 2667432.272op/s ± 39247.038op/s | 2673323.191op/s ± 12623.010op/s | 2684220.603op/s | 2704659.483op/s | 2719542.032op/s | 2735488.971op/s | 2.33% | -5.535 | 49.216 | 1.47% | 2775.185op/s | 1 | 200 |
| trace_buffer/2_senders/10us_delay | execution_time | 56.628ms | 56.974ms ± 0.163ms | 56.959ms ± 0.093ms | 57.079ms | 57.296ms | 57.379ms | 57.485ms | 0.92% | 0.568 | 0.313 | 0.29% | 0.012ms | 1 | 200 |
| trace_buffer/2_senders/10us_delay | throughput | 31312.410op/s | 31593.429op/s ± 90.363op/s | 31601.443op/s ± 51.606op/s | 31648.831op/s | 31722.143op/s | 31757.295op/s | 31786.468op/s | 0.59% | -0.551 | 0.285 | 0.29% | 6.390op/s | 1 | 200 |
| trace_buffer/2_senders/1us_delay | execution_time | 50.059ms | 50.118ms ± 0.040ms | 50.109ms ± 0.024ms | 50.134ms | 50.193ms | 50.225ms | 50.271ms | 0.32% | 1.014 | 0.636 | 0.08% | 0.003ms | 1 | 200 |
| trace_buffer/2_senders/1us_delay | throughput | 35805.891op/s | 35915.096op/s ± 28.623op/s | 35921.932op/s ± 16.992op/s | 35937.573op/s | 35948.507op/s | 35953.896op/s | 35957.906op/s | 0.10% | -1.010 | 0.624 | 0.08% | 2.024op/s | 1 | 200 |
| trace_buffer/2_senders/no_delay | execution_time | 845.936µs | 886.746µs ± 18.624µs | 884.752µs ± 10.041µs | 895.132µs | 917.955µs | 940.014µs | 1001.606µs | 13.21% | 1.600 | 6.801 | 2.09% | 1.317µs | 1 | 200 |
| trace_buffer/2_senders/no_delay | throughput | 1797114.307op/s | 2030758.539op/s ± 41419.619op/s | 2034467.993op/s ± 23094.824op/s | 2056873.154op/s | 2086696.205op/s | 2109567.471op/s | 2127819.485op/s | 4.59% | -1.251 | 4.658 | 2.03% | 2928.809op/s | 1 | 200 |
| trace_buffer/4_senders/10us_delay | execution_time | 57.163ms | 57.491ms ± 0.142ms | 57.480ms ± 0.081ms | 57.565ms | 57.765ms | 57.918ms | 57.961ms | 0.84% | 0.687 | 1.027 | 0.25% | 0.010ms | 1 | 200 |
| trace_buffer/4_senders/10us_delay | throughput | 62110.989op/s | 62618.944op/s ± 154.659op/s | 62630.341op/s ± 88.541op/s | 62716.692op/s | 62833.173op/s | 62961.094op/s | 62977.278op/s | 0.55% | -0.668 | 0.995 | 0.25% | 10.936op/s | 1 | 200 |
| trace_buffer/4_senders/1us_delay | execution_time | 50.098ms | 50.171ms ± 0.046ms | 50.162ms ± 0.018ms | 50.181ms | 50.255ms | 50.295ms | 50.556ms | 0.79% | 3.558 | 23.990 | 0.09% | 0.003ms | 1 | 200 |
| trace_buffer/4_senders/1us_delay | throughput | 71207.950op/s | 71754.418op/s ± 65.353op/s | 71767.018op/s ± 25.270op/s | 71791.483op/s | 71819.059op/s | 71840.604op/s | 71859.251op/s | 0.13% | -3.521 | 23.573 | 0.09% | 4.621op/s | 1 | 200 |
| trace_buffer/4_senders/no_delay | execution_time | 2.075ms | 2.295ms ± 0.095ms | 2.304ms ± 0.062ms | 2.361ms | 2.427ms | 2.507ms | 2.529ms | 9.76% | -0.142 | -0.436 | 4.13% | 0.007ms | 1 | 200 |
| trace_buffer/4_senders/no_delay | throughput | 1423307.591op/s | 1571303.735op/s ± 65670.721op/s | 1562278.101op/s ± 42564.650op/s | 1614032.476op/s | 1685338.149op/s | 1720435.275op/s | 1734930.353op/s | 11.05% | 0.329 | -0.428 | 4.17% | 4643.621op/s | 1 | 200 |
| trace_buffer/8_senders/10us_delay | execution_time | 57.616ms | 57.891ms ± 0.203ms | 57.836ms ± 0.089ms | 57.946ms | 58.341ms | 58.488ms | 58.531ms | 1.20% | 1.370 | 1.181 | 0.35% | 0.014ms | 1 | 200 |
| trace_buffer/8_senders/10us_delay | throughput | 123011.466op/s | 124372.346op/s ± 433.415op/s | 124489.362op/s ± 190.814op/s | 124668.549op/s | 124836.595op/s | 124921.481op/s | 124965.919op/s | 0.38% | -1.356 | 1.142 | 0.35% | 30.647op/s | 1 | 200 |
| trace_buffer/8_senders/1us_delay | execution_time | 50.208ms | 50.293ms ± 0.058ms | 50.276ms ± 0.025ms | 50.320ms | 50.396ms | 50.522ms | 50.529ms | 0.51% | 1.742 | 3.953 | 0.12% | 0.004ms | 1 | 200 |
| trace_buffer/8_senders/1us_delay | throughput | 142491.136op/s | 143161.698op/s ± 165.109op/s | 143210.828op/s ± 71.464op/s | 143267.625op/s | 143344.471op/s | 143390.339op/s | 143402.519op/s | 0.13% | -1.732 | 3.905 | 0.12% | 11.675op/s | 1 | 200 |
| trace_buffer/8_senders/no_delay | execution_time | 5.598ms | 6.476ms ± 0.165ms | 6.523ms ± 0.081ms | 6.588ms | 6.656ms | 6.705ms | 6.729ms | 3.16% | -1.644 | 4.149 | 2.54% | 0.012ms | 1 | 200 |
| trace_buffer/8_senders/no_delay | throughput | 1070014.412op/s | 1112584.933op/s ± 29735.169op/s | 1103851.386op/s ± 13577.759op/s | 1123466.060op/s | 1168541.447op/s | 1205982.932op/s | 1286134.040op/s | 16.51% | 1.945 | 6.102 | 2.67% | 2102.594op/s | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| trace_buffer/1_senders/10us_delay | execution_time | [56.550ms; 56.592ms] or [-0.037%; +0.037%] | None | None | None |
| trace_buffer/1_senders/10us_delay | throughput | [15903.426op/s; 15915.284op/s] or [-0.037%; +0.037%] | None | None | None |
| trace_buffer/1_senders/1us_delay | execution_time | [50.074ms; 50.084ms] or [-0.010%; +0.010%] | None | None | None |
| trace_buffer/1_senders/1us_delay | throughput | [17969.724op/s; 17973.318op/s] or [-0.010%; +0.010%] | None | None | None |
| trace_buffer/1_senders/no_delay | execution_time | [336.728µs; 338.238µs] or [-0.224%; +0.224%] | None | None | None |
| trace_buffer/1_senders/no_delay | throughput | [2661993.010op/s; 2672871.534op/s] or [-0.204%; +0.204%] | None | None | None |
| trace_buffer/2_senders/10us_delay | execution_time | [56.952ms; 56.997ms] or [-0.040%; +0.040%] | None | None | None |
| trace_buffer/2_senders/10us_delay | throughput | [31580.906op/s; 31605.953op/s] or [-0.040%; +0.040%] | None | None | None |
| trace_buffer/2_senders/1us_delay | execution_time | [50.113ms; 50.124ms] or [-0.011%; +0.011%] | None | None | None |
| trace_buffer/2_senders/1us_delay | throughput | [35911.129op/s; 35919.063op/s] or [-0.011%; +0.011%] | None | None | None |
| trace_buffer/2_senders/no_delay | execution_time | [884.165µs; 889.327µs] or [-0.291%; +0.291%] | None | None | None |
| trace_buffer/2_senders/no_delay | throughput | [2025018.178op/s; 2036498.900op/s] or [-0.283%; +0.283%] | None | None | None |
| trace_buffer/4_senders/10us_delay | execution_time | [57.471ms; 57.511ms] or [-0.034%; +0.034%] | None | None | None |
| trace_buffer/4_senders/10us_delay | throughput | [62597.510op/s; 62640.378op/s] or [-0.034%; +0.034%] | None | None | None |
| trace_buffer/4_senders/1us_delay | execution_time | [50.165ms; 50.178ms] or [-0.013%; +0.013%] | None | None | None |
| trace_buffer/4_senders/1us_delay | throughput | [71745.360op/s; 71763.475op/s] or [-0.013%; +0.013%] | None | None | None |
| trace_buffer/4_senders/no_delay | execution_time | [2.282ms; 2.308ms] or [-0.574%; +0.574%] | None | None | None |
| trace_buffer/4_senders/no_delay | throughput | [1562202.405op/s; 1580405.065op/s] or [-0.579%; +0.579%] | None | None | None |
| trace_buffer/8_senders/10us_delay | execution_time | [57.863ms; 57.919ms] or [-0.049%; +0.049%] | None | None | None |
| trace_buffer/8_senders/10us_delay | throughput | [124312.279op/s; 124432.414op/s] or [-0.048%; +0.048%] | None | None | None |
| trace_buffer/8_senders/1us_delay | execution_time | [50.285ms; 50.301ms] or [-0.016%; +0.016%] | None | None | None |
| trace_buffer/8_senders/1us_delay | throughput | [143138.816op/s; 143184.581op/s] or [-0.016%; +0.016%] | None | None | None |
| trace_buffer/8_senders/no_delay | execution_time | [6.453ms; 6.499ms] or [-0.354%; +0.354%] | None | None | None |
| trace_buffer/8_senders/no_delay | throughput | [1108463.924op/s; 1116705.941op/s] or [-0.370%; +0.370%] | None | None | None |
Baseline
Baseline benchmark details
Group 1
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | 0c78ffc | 1784729439 | main |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| trace_buffer/1_senders/10us_delay | execution_time | 56.289ms | 56.531ms ± 0.116ms | 56.522ms ± 0.068ms | 56.593ms | 56.734ms | 56.870ms | 57.006ms | 0.86% | 0.877 | 1.642 | 0.20% | 0.008ms | 1 | 200 |
| trace_buffer/1_senders/10us_delay | throughput | 15787.820op/s | 15920.475op/s ± 32.657op/s | 15922.943op/s ± 19.187op/s | 15941.967op/s | 15969.711op/s | 15983.827op/s | 15988.981op/s | 0.41% | -0.860 | 1.591 | 0.20% | 2.309op/s | 1 | 200 |
| trace_buffer/1_senders/1us_delay | execution_time | 49.994ms | 50.074ms ± 0.031ms | 50.079ms ± 0.017ms | 50.090ms | 50.138ms | 50.151ms | 50.169ms | 0.18% | 0.326 | 0.166 | 0.06% | 0.002ms | 1 | 200 |
| trace_buffer/1_senders/1us_delay | throughput | 17939.297op/s | 17973.248op/s ± 10.961op/s | 17971.569op/s ± 5.974op/s | 17982.668op/s | 17989.123op/s | 17990.778op/s | 18001.992op/s | 0.17% | -0.322 | 0.161 | 0.06% | 0.775op/s | 1 | 200 |
| trace_buffer/1_senders/no_delay | execution_time | 331.039µs | 337.591µs ± 3.010µs | 337.154µs ± 1.264µs | 338.544µs | 342.219µs | 347.401µs | 353.353µs | 4.80% | 1.542 | 5.403 | 0.89% | 0.213µs | 1 | 200 |
| trace_buffer/1_senders/no_delay | throughput | 2547030.815op/s | 2666159.906op/s ± 23467.409op/s | 2669405.939op/s ± 10046.277op/s | 2678625.089op/s | 2697077.964op/s | 2717701.387op/s | 2718709.742op/s | 1.85% | -1.412 | 4.786 | 0.88% | 1659.396op/s | 1 | 200 |
| trace_buffer/2_senders/10us_delay | execution_time | 56.567ms | 57.130ms ± 0.188ms | 57.119ms ± 0.137ms | 57.273ms | 57.431ms | 57.595ms | 57.657ms | 0.94% | 0.239 | -0.094 | 0.33% | 0.013ms | 1 | 200 |
| trace_buffer/2_senders/10us_delay | throughput | 31219.051op/s | 31507.199op/s ± 103.390op/s | 31513.001op/s ± 75.815op/s | 31586.806op/s | 31664.402op/s | 31706.408op/s | 31820.873op/s | 0.98% | -0.221 | -0.098 | 0.33% | 7.311op/s | 1 | 200 |
| trace_buffer/2_senders/1us_delay | execution_time | 50.036ms | 50.116ms ± 0.039ms | 50.108ms ± 0.022ms | 50.132ms | 50.201ms | 50.234ms | 50.267ms | 0.32% | 1.288 | 1.879 | 0.08% | 0.003ms | 1 | 200 |
| trace_buffer/2_senders/1us_delay | throughput | 35808.530op/s | 35916.889op/s ± 28.143op/s | 35922.514op/s ± 15.741op/s | 35936.780op/s | 35948.171op/s | 35955.396op/s | 35974.380op/s | 0.14% | -1.283 | 1.861 | 0.08% | 1.990op/s | 1 | 200 |
| trace_buffer/2_senders/no_delay | execution_time | 871.417µs | 915.647µs ± 17.564µs | 918.653µs ± 11.174µs | 927.745µs | 942.257µs | 946.682µs | 951.360µs | 3.56% | -0.484 | -0.203 | 1.91% | 1.242µs | 1 | 200 |
| trace_buffer/2_senders/no_delay | throughput | 1892027.591op/s | 1966549.617op/s ± 38107.629op/s | 1959390.134op/s ± 23982.422op/s | 1989531.321op/s | 2040454.626op/s | 2063642.067op/s | 2065600.409op/s | 5.42% | 0.574 | -0.095 | 1.93% | 2694.616op/s | 1 | 200 |
| trace_buffer/4_senders/10us_delay | execution_time | 57.052ms | 57.452ms ± 0.164ms | 57.428ms ± 0.106ms | 57.558ms | 57.724ms | 57.894ms | 58.007ms | 1.01% | 0.489 | 0.286 | 0.29% | 0.012ms | 1 | 200 |
| trace_buffer/4_senders/10us_delay | throughput | 62061.547op/s | 62661.887op/s ± 178.862op/s | 62686.955op/s ± 115.213op/s | 62775.003op/s | 62913.536op/s | 63020.666op/s | 63100.775op/s | 0.66% | -0.472 | 0.259 | 0.28% | 12.647op/s | 1 | 200 |
| trace_buffer/4_senders/1us_delay | execution_time | 50.117ms | 50.171ms ± 0.035ms | 50.163ms ± 0.018ms | 50.185ms | 50.251ms | 50.276ms | 50.287ms | 0.25% | 1.224 | 1.236 | 0.07% | 0.002ms | 1 | 200 |
| trace_buffer/4_senders/1us_delay | throughput | 71588.976op/s | 71754.606op/s ± 50.331op/s | 71766.226op/s ± 25.293op/s | 71788.417op/s | 71812.883op/s | 71827.145op/s | 71831.717op/s | 0.09% | -1.220 | 1.226 | 0.07% | 3.559op/s | 1 | 200 |
| trace_buffer/4_senders/no_delay | execution_time | 2.089ms | 2.373ms ± 0.075ms | 2.372ms ± 0.044ms | 2.415ms | 2.497ms | 2.525ms | 2.548ms | 7.42% | -0.210 | 0.390 | 3.15% | 0.005ms | 1 | 200 |
| trace_buffer/4_senders/no_delay | throughput | 1413123.244op/s | 1518414.114op/s ± 48383.416op/s | 1517921.996op/s ± 28255.341op/s | 1546203.292op/s | 1602682.765op/s | 1629175.658op/s | 1723241.441op/s | 13.53% | 0.449 | 0.920 | 3.18% | 3421.224op/s | 1 | 200 |
| trace_buffer/8_senders/10us_delay | execution_time | 57.637ms | 57.943ms ± 0.211ms | 57.887ms ± 0.110ms | 58.017ms | 58.410ms | 58.518ms | 58.758ms | 1.50% | 1.199 | 1.085 | 0.36% | 0.015ms | 1 | 200 |
| trace_buffer/8_senders/10us_delay | throughput | 122537.461op/s | 124262.688op/s ± 449.795op/s | 124379.982op/s ± 236.963op/s | 124589.441op/s | 124783.953op/s | 124871.032op/s | 124918.985op/s | 0.43% | -1.182 | 1.027 | 0.36% | 31.805op/s | 1 | 200 |
| trace_buffer/8_senders/1us_delay | execution_time | 50.206ms | 50.285ms ± 0.055ms | 50.270ms ± 0.025ms | 50.308ms | 50.384ms | 50.497ms | 50.538ms | 0.54% | 1.908 | 4.839 | 0.11% | 0.004ms | 1 | 200 |
| trace_buffer/8_senders/1us_delay | throughput | 142465.662op/s | 143184.690op/s ± 155.116op/s | 143227.886op/s ± 70.167op/s | 143280.566op/s | 143355.298op/s | 143388.431op/s | 143409.566op/s | 0.13% | -1.898 | 4.788 | 0.11% | 10.968op/s | 1 | 200 |
| trace_buffer/8_senders/no_delay | execution_time | 5.559ms | 6.481ms ± 0.145ms | 6.504ms ± 0.088ms | 6.581ms | 6.659ms | 6.684ms | 6.740ms | 3.63% | -1.843 | 7.697 | 2.23% | 0.010ms | 1 | 200 |
| trace_buffer/8_senders/no_delay | throughput | 1068221.945op/s | 1111570.948op/s ± 26042.495op/s | 1107022.389op/s ± 15071.672op/s | 1123469.672op/s | 1157140.414op/s | 1184348.443op/s | 1295203.113op/s | 17.00% | 2.339 | 11.786 | 2.34% | 1841.482op/s | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| trace_buffer/1_senders/10us_delay | execution_time | [56.515ms; 56.547ms] or [-0.028%; +0.028%] | None | None | None |
| trace_buffer/1_senders/10us_delay | throughput | [15915.949op/s; 15925.001op/s] or [-0.028%; +0.028%] | None | None | None |
| trace_buffer/1_senders/1us_delay | execution_time | [50.070ms; 50.079ms] or [-0.008%; +0.008%] | None | None | None |
| trace_buffer/1_senders/1us_delay | throughput | [17971.729op/s; 17974.767op/s] or [-0.008%; +0.008%] | None | None | None |
| trace_buffer/1_senders/no_delay | execution_time | [337.173µs; 338.008µs] or [-0.124%; +0.124%] | None | None | None |
| trace_buffer/1_senders/no_delay | throughput | [2662907.549op/s; 2669412.263op/s] or [-0.122%; +0.122%] | None | None | None |
| trace_buffer/2_senders/10us_delay | execution_time | [57.104ms; 57.156ms] or [-0.046%; +0.046%] | None | None | None |
| trace_buffer/2_senders/10us_delay | throughput | [31492.870op/s; 31521.528op/s] or [-0.045%; +0.045%] | None | None | None |
| trace_buffer/2_senders/1us_delay | execution_time | [50.110ms; 50.121ms] or [-0.011%; +0.011%] | None | None | None |
| trace_buffer/2_senders/1us_delay | throughput | [35912.989op/s; 35920.790op/s] or [-0.011%; +0.011%] | None | None | None |
| trace_buffer/2_senders/no_delay | execution_time | [913.213µs; 918.081µs] or [-0.266%; +0.266%] | None | None | None |
| trace_buffer/2_senders/no_delay | throughput | [1961268.266op/s; 1971830.968op/s] or [-0.269%; +0.269%] | None | None | None |
| trace_buffer/4_senders/10us_delay | execution_time | [57.429ms; 57.474ms] or [-0.040%; +0.040%] | None | None | None |
| trace_buffer/4_senders/10us_delay | throughput | [62637.099op/s; 62686.676op/s] or [-0.040%; +0.040%] | None | None | None |
| trace_buffer/4_senders/1us_delay | execution_time | [50.166ms; 50.176ms] or [-0.010%; +0.010%] | None | None | None |
| trace_buffer/4_senders/1us_delay | throughput | [71747.630op/s; 71761.581op/s] or [-0.010%; +0.010%] | None | None | None |
| trace_buffer/4_senders/no_delay | execution_time | [2.363ms; 2.384ms] or [-0.437%; +0.437%] | None | None | None |
| trace_buffer/4_senders/no_delay | throughput | [1511708.637op/s; 1525119.590op/s] or [-0.442%; +0.442%] | None | None | None |
| trace_buffer/8_senders/10us_delay | execution_time | [57.913ms; 57.972ms] or [-0.050%; +0.050%] | None | None | None |
| trace_buffer/8_senders/10us_delay | throughput | [124200.351op/s; 124325.026op/s] or [-0.050%; +0.050%] | None | None | None |
| trace_buffer/8_senders/1us_delay | execution_time | [50.277ms; 50.292ms] or [-0.015%; +0.015%] | None | None | None |
| trace_buffer/8_senders/1us_delay | throughput | [143163.192op/s; 143206.187op/s] or [-0.015%; +0.015%] | None | None | None |
| trace_buffer/8_senders/no_delay | execution_time | [6.461ms; 6.501ms] or [-0.310%; +0.310%] | None | None | None |
| trace_buffer/8_senders/no_delay | throughput | [1107961.709op/s; 1115180.187op/s] or [-0.325%; +0.325%] | None | None | None |
🎉 All green!🧪 All tests passed 🎯 Code Coverage (details) 🔗 Commit SHA: 12c32eb | Docs | Datadog PR Page | Give us feedback! |
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 12c32eb34a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in
|
What does this PR do?
#2170 added
additional_metric_tagstoClientGroupedStatsinlibdd-trace-stats, letting tracers attach extra tracer/customer-configured key/value dimensions (up to 4 keys, values capped at 200 chars) to stats aggregation. That change only wired the tags into the native/v0.6/statsagent payload.This PR extends the OTLP stats path (
libdd-data-pipeline/src/otlp/metrics.rs) so the sameadditional_metric_tagsare also serialized as data-point attributes on thetraces.span.sdk.metrics.durationOTLP histogram metric, mirroring the existingpeer_tagshandling.Motivation
Consumers of the OTLP metrics export (e.g. via an OTel collector) were silently missing these additional tags/dimensions that are already present in the native stats payload, creating a parity gap between the two export paths.
Additional Notes
peer_tags— they are emitted in both normal andotel_trace_semantics_enabled(OTel-semantics) mode; they're not stripped likedatadog.*attributes.additional_metric_tagsentries are"key:value"strings; splitting on the first:(notsplit(':')/last) correctly preserves values containing embedded colons (e.g. URLs), matching howpeer_tagsare handled.How to test the change?
emits_additional_metric_tags_as_attributesunit test inlibdd-data-pipeline/src/otlp/metrics.rscovering: normal emission, values containing embedded colons, pass-through underotel_trace_semantics_enabled, and skipping malformed/empty-value entries.cargo nextest run -p libdd-data-pipelineandcargo +stable clippy -p libdd-data-pipeline --all-targets -- -D warningspass locally.