1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-11-23 22:34:47 +02:00

Only enforce cardinality limits when the attribute set does not already exist (#7422)

Fixes https://github.com/open-telemetry/opentelemetry-go/issues/7035

Benchmarks with a default value of 2000.

Parallel 
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/metric
cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
                                                                                  │  main24.txt  │         newwithlimit24.txt          │
                                                                                  │    sec/op    │    sec/op     vs base               │
SyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/0-24                   272.4n ±  6%   287.6n ± 11%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/1-24                   318.1n ±  9%   289.9n ± 11%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/10-24                  305.5n ± 13%   273.4n ±  9%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/0-24                 263.4n ± 14%   273.1n ± 12%        ~ (p=0.485 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/1-24                 276.8n ±  8%   284.3n ± 10%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/10-24                266.2n ± 10%   285.9n ± 16%        ~ (p=0.394 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/0-24             265.9n ± 11%   286.4n ± 14%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/1-24             301.6n ± 16%   286.1n ±  6%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/10-24            256.1n ± 16%   282.7n ± 14%  +10.41% (p=0.041 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/0-24           269.1n ± 19%   272.0n ±  6%        ~ (p=0.485 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/1-24           299.5n ± 12%   261.6n ± 16%  -12.67% (p=0.013 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/10-24          286.3n ± 16%   275.8n ± 10%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Gauge/Attributes/0-24                     265.4n ±  4%   243.1n ± 11%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Gauge/Attributes/1-24                     260.6n ± 10%   258.7n ± 17%        ~ (p=0.818 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Gauge/Attributes/10-24                    266.6n ± 15%   251.8n ± 16%        ~ (p=0.699 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Gauge/Attributes/0-24                   265.4n ±  9%   263.3n ± 13%        ~ (p=0.818 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Gauge/Attributes/1-24                   271.7n ± 15%   305.4n ± 21%        ~ (p=0.132 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Gauge/Attributes/10-24                  287.4n ± 13%   265.7n ±  9%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/0-24                 276.6n ±  9%   300.4n ± 25%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/1-24                 294.9n ± 11%   276.8n ± 21%        ~ (p=0.818 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/10-24                308.3n ±  8%   281.4n ± 20%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/0-24               296.1n ± 13%   286.5n ± 14%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/1-24               329.0n ± 19%   299.6n ±  8%        ~ (p=0.240 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/10-24              288.1n ± 28%   309.9n ± 14%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/0-24      298.3n ± 12%   282.9n ±  9%        ~ (p=0.240 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/1-24      309.7n ±  4%   355.2n ± 11%  +14.67% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/10-24     308.5n ± 12%   307.6n ± 15%        ~ (p=1.000 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/0-24    294.1n ± 17%   289.1n ± 24%        ~ (p=0.818 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/1-24    326.6n ± 13%   299.2n ± 14%        ~ (p=0.240 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/10-24   329.8n ± 19%   283.7n ± 15%        ~ (p=0.132 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/0-24                    269.9n ± 15%   266.7n ±  6%        ~ (p=0.818 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/1-24                    297.4n ±  9%   271.9n ±  5%   -8.59% (p=0.009 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/10-24                   326.4n ± 20%   276.3n ±  5%  -15.32% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/0-24                  298.1n ± 10%   259.6n ± 10%  -12.92% (p=0.009 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/1-24                  311.4n ±  6%   276.8n ±  7%  -11.11% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/10-24                 312.4n ±  7%   264.1n ±  8%  -15.45% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/0-24              286.2n ±  8%   272.9n ± 13%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/1-24              310.1n ±  4%   289.2n ± 11%        ~ (p=0.065 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/10-24             329.8n ±  8%   277.1n ± 11%  -15.95% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/0-24            261.4n ± 17%   262.8n ±  7%        ~ (p=0.965 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/1-24            292.3n ± 10%   271.2n ±  8%   -7.22% (p=0.026 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/10-24           306.6n ± 12%   271.9n ±  7%        ~ (p=0.065 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Gauge/Attributes/0-24                      263.2n ± 22%   254.7n ±  6%        ~ (p=0.240 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Gauge/Attributes/1-24                      284.8n ±  5%   285.0n ± 11%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Gauge/Attributes/10-24                     285.7n ± 17%   296.6n ± 10%        ~ (p=0.485 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Gauge/Attributes/0-24                    272.3n ± 11%   261.4n ±  8%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Gauge/Attributes/1-24                    281.9n ± 21%   287.8n ± 11%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Gauge/Attributes/10-24                   283.3n ± 15%   254.3n ± 12%  -10.24% (p=0.041 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/0-24                  296.1n ± 13%   295.5n ±  9%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/1-24                  310.0n ± 19%   301.7n ± 11%        ~ (p=0.485 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/10-24                 298.8n ± 17%   297.1n ±  3%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/0-24                303.4n ±  7%   280.9n ±  8%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/1-24                292.2n ± 14%   290.7n ± 13%        ~ (p=1.000 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/10-24               313.9n ± 20%   314.4n ±  8%        ~ (p=1.000 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/0-24       289.8n ±  3%   287.3n ±  3%        ~ (p=1.000 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/1-24       321.0n ±  6%   308.7n ±  8%   -3.82% (p=0.041 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/10-24      313.1n ±  9%   315.4n ±  5%        ~ (p=0.818 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/0-24     318.9n ± 13%   285.8n ± 24%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/1-24     319.0n ±  9%   317.0n ± 12%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/10-24    396.8n ± 15%   300.3n ±  5%  -24.30% (p=0.002 n=6)
geomean                                                                             294.1n         282.9n         -3.80%
```

Single-threaded:
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/metric
cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
                                                                               │  main1.txt   │          newwithlimit1.txt          │
                                                                               │    sec/op    │    sec/op     vs base               │
SyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/0                   117.5n ±  5%   109.8n ± 20%        ~ (p=0.089 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/1                   128.5n ± 35%   118.5n ±  3%   -7.79% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Counter/Attributes/10                  126.4n ±  4%   117.3n ±  4%   -7.16% (p=0.004 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/0                 110.4n ±  1%   112.2n ±  3%   +1.59% (p=0.028 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/1                 119.8n ±  2%   118.4n ±  4%        ~ (p=0.171 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Counter/Attributes/10                120.1n ±  2%   121.9n ±  3%        ~ (p=0.394 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/0             117.3n ± 38%   109.5n ±  2%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/1             120.8n ± 28%   119.9n ±  8%        ~ (p=1.000 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64UpDownCounter/Attributes/10            121.1n ±  3%   117.0n ±  2%   -3.38% (p=0.009 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/0           111.8n ± 11%   111.0n ±  2%        ~ (p=0.331 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/1           121.7n ±  9%   117.5n ±  1%   -3.49% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64UpDownCounter/Attributes/10          126.5n ±  4%   122.3n ±  8%        ~ (p=0.290 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Gauge/Attributes/0                     125.5n ± 25%   109.2n ±  3%  -12.98% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Gauge/Attributes/1                     121.7n ±  6%   116.5n ±  6%   -4.31% (p=0.022 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Gauge/Attributes/10                    119.9n ±  4%   120.8n ±  4%        ~ (p=0.838 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Gauge/Attributes/0                   112.5n ±  6%   109.7n ± 40%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Gauge/Attributes/1                   121.2n ±  6%   121.4n ±  3%        ~ (p=0.727 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Gauge/Attributes/10                  118.6n ±  2%   120.5n ±  2%   +1.69% (p=0.045 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/0                 97.38n ± 14%   96.56n ± 10%        ~ (p=0.240 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/1                 107.1n ±  4%   105.6n ±  5%        ~ (p=0.240 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/10                109.7n ±  5%   108.4n ±  3%        ~ (p=0.221 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/0               98.30n ±  4%   96.02n ±  2%   -2.31% (p=0.015 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/1               107.9n ±  9%   106.2n ± 14%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/10              107.6n ±  1%   107.0n ±  1%        ~ (p=0.485 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/0      151.5n ±  3%   149.7n ±  2%        ~ (p=0.071 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/1      161.2n ±  2%   158.5n ±  3%   -1.67% (p=0.035 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/10     162.3n ±  2%   159.9n ± 37%        ~ (p=0.240 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/0    154.7n ± 10%   149.0n ±  1%   -3.68% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/1    161.0n ±  2%   160.5n ±  3%        ~ (p=0.732 n=6)
SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/10   162.9n ±  1%   162.6n ± 27%        ~ (p=0.838 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/0                    180.1n ±  4%   174.0n ±  7%        ~ (p=0.065 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/1                    193.2n ± 12%   198.7n ± 10%        ~ (p=1.000 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/10                   191.4n ± 43%   183.8n ±  3%   -4.02% (p=0.004 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/0                  182.7n ±  5%   179.8n ±  4%        ~ (p=0.132 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/1                  199.4n ±  3%   185.1n ±  2%   -7.17% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/10                 198.5n ±  6%   193.0n ±  5%        ~ (p=0.589 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/0              184.7n ± 19%   173.5n ±  5%        ~ (p=0.058 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/1              183.2n ±  7%   180.7n ±  2%   -1.39% (p=0.037 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/10             185.3n ± 21%   183.6n ±  3%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/0            187.4n ±  7%   183.8n ±  6%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/1            194.6n ±  4%   189.2n ±  2%   -2.75% (p=0.004 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/10           199.9n ±  5%   189.4n ±  3%   -5.23% (p=0.026 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Gauge/Attributes/0                      179.2n ±  5%   187.7n ±  4%        ~ (p=0.065 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Gauge/Attributes/1                      188.6n ±  2%   192.1n ±  4%        ~ (p=0.221 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Gauge/Attributes/10                     186.2n ±  1%   189.9n ±  3%   +2.04% (p=0.009 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Gauge/Attributes/0                    179.4n ±  4%   183.6n ±  8%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Gauge/Attributes/1                    188.0n ±  2%   190.6n ±  2%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Gauge/Attributes/10                   197.1n ±  6%   188.3n ±  6%        ~ (p=0.180 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/0                  222.6n ± 10%   227.8n ±  5%        ~ (p=0.310 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/1                  224.2n ±  7%   230.8n ±  6%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/10                 240.6n ± 10%   233.6n ±  6%        ~ (p=0.394 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/0                216.9n ±  4%   222.0n ±  5%        ~ (p=0.937 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/1                223.3n ±  3%   221.4n ±  4%        ~ (p=0.372 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/10               240.8n ±  5%   224.5n ± 19%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/0       224.5n ±  2%   218.2n ±  2%   -2.83% (p=0.030 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/1       230.9n ±  2%   228.8n ±  1%   -0.95% (p=0.026 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialInt64Histogram/Attributes/10      231.5n ±  4%   242.1n ±  5%        ~ (p=0.093 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/0     237.1n ±  3%   221.8n ±  6%   -6.47% (p=0.004 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/1     245.3n ±  0%   234.4n ±  4%   -4.46% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/ExponentialFloat64Histogram/Attributes/10    249.3n ± 11%   240.9n ± 17%        ~ (p=0.589 n=6)
geomean                                                                          159.1n         156.0n         -1.97%
```

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
This commit is contained in:
David Ashpole
2025-09-29 11:33:27 -04:00
committed by GitHub
parent 59ac46c03a
commit 45539cf5a3
4 changed files with 41 additions and 29 deletions

View File

@@ -338,13 +338,18 @@ func (e *expoHistogram[N]) measure(
e.valuesMu.Lock()
defer e.valuesMu.Unlock()
attr := e.limit.Attributes(fltrAttr, e.values)
v, ok := e.values[attr.Equivalent()]
v, ok := e.values[fltrAttr.Equivalent()]
if !ok {
v = newExpoHistogramDataPoint[N](attr, e.maxSize, e.maxScale, e.noMinMax, e.noSum)
v.res = e.newRes(attr)
fltrAttr = e.limit.Attributes(fltrAttr, e.values)
// If we overflowed, make sure we add to the existing overflow series
// if it already exists.
v, ok = e.values[fltrAttr.Equivalent()]
if !ok {
v = newExpoHistogramDataPoint[N](fltrAttr, e.maxSize, e.maxScale, e.noMinMax, e.noSum)
v.res = e.newRes(fltrAttr)
e.values[attr.Equivalent()] = v
e.values[fltrAttr.Equivalent()] = v
}
}
v.record(value)
v.res.Offer(ctx, value, droppedAttr)

View File

@@ -97,22 +97,27 @@ func (s *histValues[N]) measure(
s.valuesMu.Lock()
defer s.valuesMu.Unlock()
attr := s.limit.Attributes(fltrAttr, s.values)
b, ok := s.values[attr.Equivalent()]
b, ok := s.values[fltrAttr.Equivalent()]
if !ok {
// N+1 buckets. For example:
//
// bounds = [0, 5, 10]
//
// Then,
//
// buckets = (-∞, 0], (0, 5.0], (5.0, 10.0], (10.0, +∞)
b = newBuckets[N](attr, len(s.bounds)+1)
b.res = s.newRes(attr)
fltrAttr = s.limit.Attributes(fltrAttr, s.values)
// If we overflowed, make sure we add to the existing overflow series
// if it already exists.
b, ok = s.values[fltrAttr.Equivalent()]
if !ok {
// N+1 buckets. For example:
//
// bounds = [0, 5, 10]
//
// Then,
//
// buckets = (-∞, 0], (0, 5.0], (5.0, 10.0], (10.0, +∞)
b = newBuckets[N](fltrAttr, len(s.bounds)+1)
b.res = s.newRes(fltrAttr)
// Ensure min and max are recorded values (not zero), for new buckets.
b.min, b.max = value, value
s.values[attr.Equivalent()] = b
// Ensure min and max are recorded values (not zero), for new buckets.
b.min, b.max = value, value
s.values[fltrAttr.Equivalent()] = b
}
}
b.bin(idx)
if !s.noMinMax {

View File

@@ -42,17 +42,18 @@ func (s *lastValue[N]) measure(ctx context.Context, value N, fltrAttr attribute.
s.Lock()
defer s.Unlock()
attr := s.limit.Attributes(fltrAttr, s.values)
d, ok := s.values[attr.Equivalent()]
d, ok := s.values[fltrAttr.Equivalent()]
if !ok {
d.res = s.newRes(attr)
fltrAttr = s.limit.Attributes(fltrAttr, s.values)
d = s.values[fltrAttr.Equivalent()]
d.res = s.newRes(fltrAttr)
d.attrs = fltrAttr
}
d.attrs = attr
d.value = value
d.res.Offer(ctx, value, droppedAttr)
s.values[attr.Equivalent()] = d
s.values[fltrAttr.Equivalent()] = d
}
func (s *lastValue[N]) delta(

View File

@@ -38,17 +38,18 @@ func (s *valueMap[N]) measure(ctx context.Context, value N, fltrAttr attribute.S
s.Lock()
defer s.Unlock()
attr := s.limit.Attributes(fltrAttr, s.values)
v, ok := s.values[attr.Equivalent()]
v, ok := s.values[fltrAttr.Equivalent()]
if !ok {
v.res = s.newRes(attr)
fltrAttr = s.limit.Attributes(fltrAttr, s.values)
v = s.values[fltrAttr.Equivalent()]
v.res = s.newRes(fltrAttr)
v.attrs = fltrAttr
}
v.attrs = attr
v.n += value
v.res.Offer(ctx, value, droppedAttr)
s.values[attr.Equivalent()] = v
s.values[fltrAttr.Equivalent()] = v
}
// newSum returns an aggregator that summarizes a set of measurements as their