You've already forked opentelemetry-go
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:
@@ -338,13 +338,18 @@ func (e *expoHistogram[N]) measure(
|
|||||||
e.valuesMu.Lock()
|
e.valuesMu.Lock()
|
||||||
defer e.valuesMu.Unlock()
|
defer e.valuesMu.Unlock()
|
||||||
|
|
||||||
attr := e.limit.Attributes(fltrAttr, e.values)
|
v, ok := e.values[fltrAttr.Equivalent()]
|
||||||
v, ok := e.values[attr.Equivalent()]
|
|
||||||
if !ok {
|
if !ok {
|
||||||
v = newExpoHistogramDataPoint[N](attr, e.maxSize, e.maxScale, e.noMinMax, e.noSum)
|
fltrAttr = e.limit.Attributes(fltrAttr, e.values)
|
||||||
v.res = e.newRes(attr)
|
// 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.record(value)
|
||||||
v.res.Offer(ctx, value, droppedAttr)
|
v.res.Offer(ctx, value, droppedAttr)
|
||||||
|
|||||||
@@ -97,8 +97,12 @@ func (s *histValues[N]) measure(
|
|||||||
s.valuesMu.Lock()
|
s.valuesMu.Lock()
|
||||||
defer s.valuesMu.Unlock()
|
defer s.valuesMu.Unlock()
|
||||||
|
|
||||||
attr := s.limit.Attributes(fltrAttr, s.values)
|
b, ok := s.values[fltrAttr.Equivalent()]
|
||||||
b, ok := s.values[attr.Equivalent()]
|
if !ok {
|
||||||
|
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 {
|
if !ok {
|
||||||
// N+1 buckets. For example:
|
// N+1 buckets. For example:
|
||||||
//
|
//
|
||||||
@@ -107,12 +111,13 @@ func (s *histValues[N]) measure(
|
|||||||
// Then,
|
// Then,
|
||||||
//
|
//
|
||||||
// buckets = (-∞, 0], (0, 5.0], (5.0, 10.0], (10.0, +∞)
|
// buckets = (-∞, 0], (0, 5.0], (5.0, 10.0], (10.0, +∞)
|
||||||
b = newBuckets[N](attr, len(s.bounds)+1)
|
b = newBuckets[N](fltrAttr, len(s.bounds)+1)
|
||||||
b.res = s.newRes(attr)
|
b.res = s.newRes(fltrAttr)
|
||||||
|
|
||||||
// Ensure min and max are recorded values (not zero), for new buckets.
|
// Ensure min and max are recorded values (not zero), for new buckets.
|
||||||
b.min, b.max = value, value
|
b.min, b.max = value, value
|
||||||
s.values[attr.Equivalent()] = b
|
s.values[fltrAttr.Equivalent()] = b
|
||||||
|
}
|
||||||
}
|
}
|
||||||
b.bin(idx)
|
b.bin(idx)
|
||||||
if !s.noMinMax {
|
if !s.noMinMax {
|
||||||
|
|||||||
@@ -42,17 +42,18 @@ func (s *lastValue[N]) measure(ctx context.Context, value N, fltrAttr attribute.
|
|||||||
s.Lock()
|
s.Lock()
|
||||||
defer s.Unlock()
|
defer s.Unlock()
|
||||||
|
|
||||||
attr := s.limit.Attributes(fltrAttr, s.values)
|
d, ok := s.values[fltrAttr.Equivalent()]
|
||||||
d, ok := s.values[attr.Equivalent()]
|
|
||||||
if !ok {
|
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.value = value
|
||||||
d.res.Offer(ctx, value, droppedAttr)
|
d.res.Offer(ctx, value, droppedAttr)
|
||||||
|
|
||||||
s.values[attr.Equivalent()] = d
|
s.values[fltrAttr.Equivalent()] = d
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *lastValue[N]) delta(
|
func (s *lastValue[N]) delta(
|
||||||
|
|||||||
@@ -38,17 +38,18 @@ func (s *valueMap[N]) measure(ctx context.Context, value N, fltrAttr attribute.S
|
|||||||
s.Lock()
|
s.Lock()
|
||||||
defer s.Unlock()
|
defer s.Unlock()
|
||||||
|
|
||||||
attr := s.limit.Attributes(fltrAttr, s.values)
|
v, ok := s.values[fltrAttr.Equivalent()]
|
||||||
v, ok := s.values[attr.Equivalent()]
|
|
||||||
if !ok {
|
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.n += value
|
||||||
v.res.Offer(ctx, value, droppedAttr)
|
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
|
// newSum returns an aggregator that summarizes a set of measurements as their
|
||||||
|
|||||||
Reference in New Issue
Block a user