Tyler Yahn
33eb582188
Upgrade semconv to 1.34.0 in sdk/trace ( #6835 )
2025-05-28 11:10:10 -07:00
Sean Liao
a571c52b0a
all: replace math/rand with math/rand/v2 ( #6732 )
...
Update to new stdlib apis.
The new Float64 is uniform, which resolves a long comment.
https://cs.opensource.google/go/go/+/refs/tags/go1.24.2:src/math/rand/v2/rand.go;l=209
> // There are exactly 1<<53 float64s in [0,1). Use Intn(1<<53) /
(1<<53).
return float64(r.Uint64()<<11>>11) / (1 << 53)
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/trace
cpu: 12th Gen Intel(R) Core(TM) i7-1260P
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
TraceStart/with_a_simple_span-16 387.1n ± 5% 306.8n ± 15% -20.73% (p=0.000 n=10)
TraceStart/with_several_links-16 542.2n ± 5% 501.0n ± 2% -7.61% (p=0.000 n=10)
TraceStart/with_attributes-16 521.4n ± 14% 571.6n ± 6% +9.64% (p=0.009 n=10)
geomean 478.3n 444.6n -7.05%
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
TraceStart/with_a_simple_span-16 528.0 ± 0% 528.0 ± 0% ~ (p=1.000 n=10) ¹
TraceStart/with_several_links-16 704.0 ± 0% 704.0 ± 0% ~ (p=1.000 n=10) ¹
TraceStart/with_attributes-16 784.0 ± 0% 784.0 ± 0% ~ (p=1.000 n=10) ¹
geomean 663.0 663.0 +0.00%
¹ all samples are equal
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
TraceStart/with_a_simple_span-16 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹
TraceStart/with_several_links-16 3.000 ± 0% 3.000 ± 0% ~ (p=1.000 n=10) ¹
TraceStart/with_attributes-16 4.000 ± 0% 4.000 ± 0% ~ (p=1.000 n=10) ¹
geomean 2.884 2.884 +0.00%
¹ all samples are equal
```
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Damien Mathieu <42@dmathieu.com >
2025-05-15 09:21:49 +02:00
Zhengke Zhou
a486ca5722
sdk/trace: Move testing harness to trace ( #6589 )
...
Closes : #6543
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2025-04-10 08:59:11 -07:00
Tyler Yahn
7512a2be2e
Add the golines golangci-lint formatter ( #6513 )
...
Ensure consistent line wrapping (<= 120 characters) within the project.
2025-03-30 03:46:44 -07:00
Zhengke Zhou
63f3cfe1b5
sdk/trace: Manage trace environment variables in testing package ( #6552 )
...
Fix : #6542
Co-authored-by: Damien Mathieu <42@dmathieu.com >
2025-03-28 09:45:34 +01:00
renovate[bot]
05de07bcf5
chore(deps): update module github.com/antonboom/testifylint to v1.6.0 ( #6440 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/Antonboom/testifylint](https://redirect.github.com/Antonboom/testifylint )
| `v1.5.2` -> `v1.6.0` |
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
---
> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.
---
### Release Notes
<details>
<summary>Antonboom/testifylint
(github.com/Antonboom/testifylint)</summary>
###
[`v1.6.0`](https://redirect.github.com/Antonboom/testifylint/releases/tag/v1.6.0 ):
– new `equal-values` and `suite-method-signature`
[Compare
Source](https://redirect.github.com/Antonboom/testifylint/compare/v1.5.2...v1.6.0 )
#### What's Changed
##### New checkers
- new checker `equal-values` by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/223 ](https://redirect.github.com/Antonboom/testifylint/pull/223 )
- new checker `suite-method-signature` by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/228 ](https://redirect.github.com/Antonboom/testifylint/pull/228 )
##### New features
- `len`: support len-len and value-len cases by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/204 ](https://redirect.github.com/Antonboom/testifylint/pull/204 )
- `error-is-as`: support NotErrorAs by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/219 ](https://redirect.github.com/Antonboom/testifylint/pull/219 )
- `useless-assert`: add NotElementsMatch and NotErrorAs by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/220 ](https://redirect.github.com/Antonboom/testifylint/pull/220 )
- `formatter`: support non-string-message checks by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/221 ](https://redirect.github.com/Antonboom/testifylint/pull/221 )
- `formatter`: warn on empty message by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/225 ](https://redirect.github.com/Antonboom/testifylint/pull/225 )
- `empty`: support empty strings, Zero for strings and len + bubbled
useless-assert cases by
[@​ccoVeille](https://redirect.github.com/ccoVeille ) in
[https://github.com/Antonboom/testifylint/pull/129 ](https://redirect.github.com/Antonboom/testifylint/pull/129 )
##### New fixes
- `negative-positive`: remove untyping, ignore Negative for len
comparisons by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/226 ](https://redirect.github.com/Antonboom/testifylint/pull/226 )
- fixes: support `assert.CollectT` by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/233 ](https://redirect.github.com/Antonboom/testifylint/pull/233 )
##### Bump deps
- Upgrade testdata to v1.10.0 of testify by
[@​Antonboom](https://redirect.github.com/Antonboom ) in
[https://github.com/Antonboom/testifylint/pull/218 ](https://redirect.github.com/Antonboom/testifylint/pull/218 )
- Go 1.24 by [@​Antonboom](https://redirect.github.com/Antonboom )
in
[https://github.com/Antonboom/testifylint/pull/234 ](https://redirect.github.com/Antonboom/testifylint/pull/234 )
- build(deps): bump golang.org/x/tools from 0.26.0 to 0.27.0 by
[@​dependabot](https://redirect.github.com/dependabot ) in
[https://github.com/Antonboom/testifylint/pull/206 ](https://redirect.github.com/Antonboom/testifylint/pull/206 )
- build(deps): bump rlespinasse/github-slug-action from 4.4.1 to 5.0.0
by [@​dependabot](https://redirect.github.com/dependabot ) in
[https://github.com/Antonboom/testifylint/pull/207 ](https://redirect.github.com/Antonboom/testifylint/pull/207 )
- build(deps): bump golang.org/x/tools from 0.27.0 to 0.29.0 by
[@​dependabot](https://redirect.github.com/dependabot ) in
[https://github.com/Antonboom/testifylint/pull/214 ](https://redirect.github.com/Antonboom/testifylint/pull/214 )
**Full Changelog**:
https://github.com/Antonboom/testifylint/compare/v1.5.2...v1.6.0
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-go ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDAuMiIsInVwZGF0ZWRJblZlciI6IjM5LjIwMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJTa2lwIENoYW5nZWxvZyIsImRlcGVuZGVuY2llcyJdfQ==-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
Co-authored-by: Tyler Yahn <codingalias@gmail.com >
2025-03-13 14:31:12 -07:00
David Ashpole
e2aee3aff8
Move trace sdk tests from trace_test into trace package ( #6400 )
...
I would like to be able to use a private option in
https://github.com/open-telemetry/opentelemetry-go/pull/6393 in tests,
and decided to split this refactoring out into its own PR.
This moves the batch span processor benchmarks into benchmark_test.go,
and replaces one instance of the tracetest.NewInMemoryExporter with a
different test exporter implementation. It then moves most unit tests
from `trace_test` to the main `trace` package.
2025-03-04 21:29:11 -05:00
Robert Pająk
9be18c14cb
sdk/trace: Fix gorountine leak in batchSpanProcessor.ForceFlush ( #6369 )
...
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6360
Per
https://github.com/open-telemetry/opentelemetry-go/issues/6360#issuecomment-2678080742 :
> So I'd fix this issue with the first proposed solution, and open an
issue to change the behavior in a separate PR.
```
$ go test -run=TestBatchSpanProcessorForceFlushTimeout -count=1000
PASS
ok go.opentelemetry.io/otel/sdk/trace 1.701s
$ go test -run=TestBatchSpanProcessorForceFlushTimeout -count=1000 -race
PASS
ok go.opentelemetry.io/otel/sdk/trace 4.056s
```
@peterbourgon, thank you for your contribution 🏅
2025-02-27 11:28:31 +01:00
Robert Pająk
44d50457d9
sdk/trace: Fix goroutine leak in simpleSpanProcessor.Shutdown ( #6368 )
...
Side-effect when working towards
https://github.com/open-telemetry/opentelemetry-go/issues/6360
- Fix goroutine leaks from tests in places where batch processor was not
shut down
- Fix goroutine leak in simpleSpanProcessor.Shutdown
2025-02-26 23:32:15 +01:00
Damien Mathieu
f62232fa1b
Replace tenv with usetesting ( #6313 )
...
The `tenv` linter is deprecated in favor of `usetesting`.
2025-02-13 11:18:37 +01:00
Sam Xie
d46bfb04fe
Fix comment of the RecordOnly sampling decision ( #6257 )
...
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2025-02-06 10:06:15 -08:00
Damien Mathieu
bab246013b
Fix span option typo in SDK span End, and WithAttributes only being available on span start ( #6006 )
2024-11-27 16:53:10 +01:00
Tyler Yahn
e016a78c9f
Fix attribute value truncation ( #5997 )
...
Fix #5996
### Correctness
From the [OTel
specification](https://github.com/open-telemetry/opentelemetry-specification/blob/88bffeac48aa5eb37ac8044e931af63a0b55fe00/specification/common/README.md#attribute-limits ):
> - set an attribute value length limit such that for each attribute
value:
> - if it is a string, if it exceeds that limit (counting any character
in it as 1), SDKs MUST truncate that value, so that its length is at
most equal to the limit...
Our current implementation truncates on number of bytes not characters.
Unit tests are added/updated to validate this fix and prevent
regressions.
### Performance
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/trace
cpu: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
│ commit-b6264913(old).txt │ commit-54c61ac2(new).txt │
│ sec/op │ sec/op vs base │
Truncate/Unlimited-8 1.2300n ± 7% 0.8757n ± 3% -28.80% (p=0.000 n=10)
Truncate/Zero-8 2.341n ± 2% 1.550n ± 9% -33.77% (p=0.000 n=10)
Truncate/Short-8 31.6800n ± 3% 0.9960n ± 4% -96.86% (p=0.000 n=10)
Truncate/ASCII-8 8.821n ± 1% 3.567n ± 3% -59.57% (p=0.000 n=10)
Truncate/ValidUTF-8-8 11.960n ± 1% 7.163n ± 1% -40.10% (p=0.000 n=10)
Truncate/InvalidUTF-8-8 56.35n ± 0% 37.34n ± 18% -33.74% (p=0.000 n=10)
Truncate/MixedUTF-8-8 81.83n ± 1% 50.00n ± 1% -38.90% (p=0.000 n=10)
geomean 12.37n 4.865n -60.68%
│ commit-b6264913(old).txt │ commit-54c61ac2(new).txt │
│ B/op │ B/op vs base │
Truncate/Unlimited-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/Zero-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/Short-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/ASCII-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/ValidUTF-8-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/InvalidUTF-8-8 16.00 ± 0% 16.00 ± 0% ~ (p=1.000 n=10) ¹
Truncate/MixedUTF-8-8 32.00 ± 0% 32.00 ± 0% ~ (p=1.000 n=10) ¹
geomean ² +0.00% ²
¹ all samples are equal
² summaries must be >0 to compute geomean
│ commit-b6264913(old).txt │ commit-54c61ac2(new).txt │
│ allocs/op │ allocs/op vs base │
Truncate/Unlimited-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/Zero-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/Short-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/ASCII-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/ValidUTF-8-8 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/InvalidUTF-8-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹
Truncate/MixedUTF-8-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹
geomean ² +0.00% ²
¹ all samples are equal
² summaries must be >0 to compute geomean
```
#### Values shorter than limit
This is the default code path. Most attribute values will be shorter
than the default 128 limit that users will not modify.
The current code, `safeTruncate` requires a full iteration of the value
to determine it is valid and under the limit.
The replacement, `truncate`, first checks if the number of bytes in the
value are less than or equal to the limit (which guarantees the number
of characters are less than or equal to the limit) and returns
immediately. This will mean that invalid encoding less than the limit is
not changed, which meets the specification requirements.
#### Values longer than the limit
For values who's number of bytes exceeds the limit, they are iterated
only once with the replacement, `truncate`.
In comparison, the current code, `safeTruncate`, can iterate the string
up to three separate times when the string contains invalid characters.
2024-11-26 09:41:55 +01:00
Flc゛
814a41388b
feat(trace): add concurrent-safe Reset method to SpanRecorder ( #5994 )
...
Add Reset method to reuse it for testing. Just like in InMemoryExporter.
2024-11-25 21:20:46 +01:00
Matthieu MOREL
74937a2952
[chore]: enable all rules of perfsprint ( #5978 )
...
#### Description
[perfsprint](https://github.com/catenacyber/perfsprint ) is a linter for
performance, aiming at usages of fmt.Sprintf which have faster
alternatives.
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com >
2024-11-18 10:04:50 +01:00
Mikhail Mazurskiy
85eb76f2fd
Allow GC to collect unneeded slice elements ( #5804 )
...
```go
type interInst struct {
x int
}
type inter interface {
}
var sink []inter
func BenchmarkX(b *testing.B) {
sink = make([]inter, b.N)
for i := 0; i < b.N; i++ {
sink[i] = &interInst{}
}
clear(sink)
sink = sink[:0]
runtime.GC()
var ms runtime.MemStats
runtime.ReadMemStats(&ms)
b.Log(b.N, ms.Frees) // Frees is the cumulative count of heap objects freed.
}
```
```
clear:
ioz_test.go:35: 1 589
ioz_test.go:35: 100 711
ioz_test.go:35: 10000 10729
ioz_test.go:35: 1000000 1010750 <-- 1m+ freed
ioz_test.go:35: 16076874 17087643
ioz_test.go:35: 19514749 36602412
```
```
no clear:
ioz_test.go:35: 1 585
ioz_test.go:35: 100 606
ioz_test.go:35: 10000 725
ioz_test.go:35: 1000000 10745 <-- some "overhead" objects freed, not the slice.
ioz_test.go:35: 16391445 1010765
ioz_test.go:35: 21765238 17402230
```
This is documented at https://go.dev/wiki/SliceTricks :
> NOTE If the type of the element is a pointer or a struct with pointer
fields, which need to be garbage collected, the above implementations of
Cut and Delete have a potential memory leak problem: some elements with
values are still referenced by slice a’s underlying array, just not
“visible” in the slice. Because the “deleted” value is referenced in the
underlying array, the deleted value is still “reachable” during GC, even
though the value cannot be referenced by your code. If the underlying
array is long-lived, this represents a leak.
Followed by examples of how zeroing out the slice elements solves
the problem. This PR does the same.
2024-11-08 07:36:35 +01:00
Robert Pająk
3742c54497
Make scope attributes as identifying for Tracer ( #5924 )
...
Towards https://github.com/open-telemetry/opentelemetry-go/issues/3368
2024-10-30 06:24:32 +01:00
Robert Pająk
30c0f3fa6e
sdk/instrumentation: Add Attributes to Scope ( #5903 )
...
Towards https://github.com/open-telemetry/opentelemetry-go/issues/3368
2024-10-29 13:47:14 +01:00
Warnar Boekkooi
64416533d5
Performance improvements for the trace SDK in Span. ( #5874 )
...
Good day,
Thanks for review this PR!
This PR follows from
https://github.com/open-telemetry/opentelemetry-go/pull/5864 and avoid
multiple locks in `End`, `RecordError`, `AddEvent` and `AddLink`.
Benchstats result are:
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/trace
cpu: 11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz
│ event-3cbd9671.txt │ event-pr-e9744b48.txt │
│ sec/op │ │
SpanEnd-12 63.07n ± 1% 53.63n ± 1% -14.97% (p=0.000 n=10)
│ event-3cbd9671.txt │ event-pr-e9744b48.txt │
│ B/op │ B/op vs base │
SpanEnd-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
│ event-3cbd9671.txt │ event-pr-e9744b48.txt │
│ allocs/op │ allocs/op vs base │
SpanEnd-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
```
---------
Co-authored-by: David Ashpole <dashpole@google.com >
Co-authored-by: Damien Mathieu <42@dmathieu.com >
2024-10-09 09:51:17 +02:00
Warnar Boekkooi
8fbaa97084
Reduce newEvictedQueueLink and newEvictedQueueEvent memory allocations ( #5858 )
...
Good day,
While doing some profile with pprof on one of our services I notices
that `sync.OnceFunc` was allocating a nice amount of objects. These
`sync.OnceFunc` calls where done by `newEvictedQueueEvent` and
`newEvictedQueueLink`.
So to avoid these extra allocation I created this PR which replaces the
`sync.OnceFunc` with `sync.Once` which is now part of the evictedQueue.
This resulted in the following benchstat result (commit
https://github.com/open-telemetry/opentelemetry-go/pull/5858/commits/baad07e574017ebcc38254b0228b2470f3ef1dc2 ):
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/trace
cpu: 11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz
│ 1727937489-attr-old.txt │ evic-new1728018933.txt │
│ sec/op │ sec/op vs base │
RecordingSpanSetAttributes/WithLimit/false-12 6.579µ ± 9% 5.875µ ± 8% -10.71% (p=0.000 n=10)
RecordingSpanSetAttributes/WithLimit/true-12 14.27µ ± 10% 11.82µ ± 16% -17.18% (p=0.009 n=10)
SpanEnd-12 63.44n ± 0% 75.97n ± 2% +19.75% (p=0.000 n=10)
TraceStart/with_a_simple_span-12 728.0n ± 3% 412.7n ± 1% -43.31% (p=0.000 n=10)
TraceStart/with_several_links-12 881.5n ± 1% 553.2n ± 3% -37.25% (p=0.000 n=10)
TraceStart/with_attributes-12 916.5n ± 2% 598.4n ± 2% -34.70% (p=0.000 n=10)
SpanProcessorOnEnd/batch:_10,_spans:_10-12 151.9n ± 3% 144.1n ± 3% -5.13% (p=0.000 n=10)
SpanProcessorOnEnd/batch:_10,_spans:_100-12 1.497µ ± 2% 1.435µ ± 2% -4.14% (p=0.000 n=10)
SpanProcessorOnEnd/batch:_100,_spans:_10-12 148.5n ± 2% 143.0n ± 2% -3.67% (p=0.000 n=10)
SpanProcessorOnEnd/batch:_100,_spans:_100-12 1.481µ ± 3% 1.442µ ± 4% -2.67% (p=0.022 n=10)
SpanProcessorVerboseLogging-12 9.376µ ± 1% 6.662µ ± 2% -28.94% (p=0.000 n=10)
SpanLimits/AttributeValueLengthLimit-12 7.221µ ± 4% 6.605µ ± 3% -8.54% (p=0.002 n=10)
SpanLimits/AttributeCountLimit-12 6.300µ ± 6% 6.091µ ± 6% -3.30% (p=0.007 n=10)
SpanLimits/EventCountLimit-12 5.921µ ± 4% 5.506µ ± 7% -7.02% (p=0.011 n=10)
SpanLimits/LinkCountLimit-12 6.073µ ± 6% 5.423µ ± 3% -10.71% (p=0.000 n=10)
SpanLimits/AttributePerEventCountLimit-12 6.455µ ± 3% 5.294µ ± 9% -17.98% (p=0.000 n=10)
SpanLimits/AttributePerLinkCountLimit-12 6.263µ ± 4% 5.850µ ± 7% -6.59% (p=0.000 n=10)
SpanSetAttributesOverCapacity-12 1.683µ ± 1% 1.391µ ± 0% -17.35% (p=0.000 n=10)
StartEndSpan/AlwaysSample-12 803.0n ± 4% 531.4n ± 5% -33.82% (p=0.000 n=10)
StartEndSpan/NeverSample-12 216.0n ± 2% 212.7n ± 2% ~ (p=0.055 n=10)
SpanWithAttributes_4/AlwaysSample-12 1216.5n ± 2% 877.6n ± 9% -27.85% (p=0.000 n=10)
SpanWithAttributes_4/NeverSample-12 370.4n ± 5% 374.5n ± 3% ~ (p=0.197 n=10)
SpanWithAttributes_8/AlwaysSample-12 1.494µ ± 4% 1.117µ ± 4% -25.27% (p=0.000 n=10)
SpanWithAttributes_8/NeverSample-12 477.1n ± 3% 475.1n ± 7% ~ (p=0.739 n=10)
SpanWithAttributes_all/AlwaysSample-12 1310.5n ± 5% 971.5n ± 6% -25.87% (p=0.000 n=10)
SpanWithAttributes_all/NeverSample-12 388.0n ± 5% 389.1n ± 6% ~ (p=0.699 n=10)
SpanWithAttributes_all_2x/AlwaysSample-12 1.664µ ± 2% 1.236µ ± 3% -25.72% (p=0.000 n=10)
SpanWithAttributes_all_2x/NeverSample-12 522.7n ± 7% 527.2n ± 9% ~ (p=0.912 n=10)
SpanWithEvents_4/AlwaysSample-12 1.411µ ± 4% 1.058µ ± 2% -24.99% (p=0.000 n=10)
SpanWithEvents_4/NeverSample-12 218.4n ± 3% 218.9n ± 2% ~ (p=0.971 n=10)
SpanWithEvents_8/AlwaysSample-12 1.997µ ± 5% 1.657µ ± 4% -17.03% (p=0.000 n=10)
SpanWithEvents_8/NeverSample-12 226.6n ± 3% 221.7n ± 2% -2.14% (p=0.015 n=10)
SpanWithEvents_WithStackTrace/AlwaysSample-12 1016.5n ± 2% 712.5n ± 2% -29.91% (p=0.000 n=10)
SpanWithEvents_WithStackTrace/NeverSample-12 242.0n ± 3% 241.0n ± 1% ~ (p=0.254 n=10)
SpanWithEvents_WithTimestamp/AlwaysSample-12 1019.5n ± 3% 713.2n ± 6% -30.04% (p=0.000 n=10)
SpanWithEvents_WithTimestamp/NeverSample-12 276.4n ± 3% 276.6n ± 2% ~ (p=0.723 n=10)
TraceID_DotString-12 71.94n ± 3% 75.71n ± 3% +5.23% (p=0.001 n=10)
SpanID_DotString-12 50.88n ± 3% 52.35n ± 1% +2.88% (p=0.001 n=10)
geomean 952.8n 822.2n -13.71%
│ 1727937489-attr-old.txt │ evic-new1728018933.txt │
│ B/op │ B/op vs base │
RecordingSpanSetAttributes/WithLimit/false-12 7.062Ki ± 0% 6.891Ki ± 0% -2.43% (p=0.000 n=10)
RecordingSpanSetAttributes/WithLimit/true-12 7.564Ki ± 0% 7.393Ki ± 0% -2.27% (p=0.000 n=10)
SpanEnd-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
TraceStart/with_a_simple_span-12 704.0 ± 0% 528.0 ± 0% -25.00% (p=0.000 n=10)
TraceStart/with_several_links-12 880.0 ± 0% 704.0 ± 0% -20.00% (p=0.000 n=10)
TraceStart/with_attributes-12 960.0 ± 0% 784.0 ± 0% -18.33% (p=0.000 n=10)
SpanProcessorOnEnd/batch:_10,_spans:_10-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorOnEnd/batch:_10,_spans:_100-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorOnEnd/batch:_100,_spans:_10-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorOnEnd/batch:_100,_spans:_100-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorVerboseLogging-12 10.938Ki ± 0% 9.219Ki ± 0% -15.71% (p=0.000 n=10)
SpanLimits/AttributeValueLengthLimit-12 10.76Ki ± 0% 10.59Ki ± 0% -1.60% (p=0.000 n=10)
SpanLimits/AttributeCountLimit-12 10.016Ki ± 0% 9.844Ki ± 0% -1.72% (p=0.000 n=10)
SpanLimits/EventCountLimit-12 9.594Ki ± 0% 9.422Ki ± 0% -1.79% (p=0.000 n=10)
SpanLimits/LinkCountLimit-12 9.203Ki ± 0% 9.031Ki ± 0% -1.87% (p=0.000 n=10)
SpanLimits/AttributePerEventCountLimit-12 10.64Ki ± 0% 10.47Ki ± 0% -1.62% (p=0.000 n=10)
SpanLimits/AttributePerLinkCountLimit-12 10.64Ki ± 0% 10.47Ki ± 0% -1.62% (p=0.000 n=10)
SpanSetAttributesOverCapacity-12 768.0 ± 0% 592.0 ± 0% -22.92% (p=0.000 n=10)
StartEndSpan/AlwaysSample-12 704.0 ± 0% 528.0 ± 0% -25.00% (p=0.000 n=10)
StartEndSpan/NeverSample-12 144.0 ± 0% 144.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_4/AlwaysSample-12 1.188Ki ± 0% 1.016Ki ± 0% -14.47% (p=0.000 n=10)
SpanWithAttributes_4/NeverSample-12 400.0 ± 0% 400.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_8/AlwaysSample-12 1.688Ki ± 0% 1.516Ki ± 0% -10.19% (p=0.000 n=10)
SpanWithAttributes_8/NeverSample-12 656.0 ± 0% 656.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_all/AlwaysSample-12 1.312Ki ± 0% 1.141Ki ± 0% -13.10% (p=0.000 n=10)
SpanWithAttributes_all/NeverSample-12 464.0 ± 0% 464.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_all_2x/AlwaysSample-12 2.062Ki ± 0% 1.891Ki ± 0% -8.33% (p=0.000 n=10)
SpanWithAttributes_all_2x/NeverSample-12 848.0 ± 0% 848.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_4/AlwaysSample-12 1.188Ki ± 0% 1.016Ki ± 0% -14.47% (p=0.000 n=10)
SpanWithEvents_4/NeverSample-12 144.0 ± 0% 144.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_8/AlwaysSample-12 1.812Ki ± 0% 1.641Ki ± 0% -9.48% (p=0.000 n=10)
SpanWithEvents_8/NeverSample-12 144.0 ± 0% 144.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_WithStackTrace/AlwaysSample-12 800.0 ± 0% 624.0 ± 0% -22.00% (p=0.000 n=10)
SpanWithEvents_WithStackTrace/NeverSample-12 160.0 ± 0% 160.0 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_WithTimestamp/AlwaysSample-12 824.0 ± 0% 648.0 ± 0% -21.36% (p=0.000 n=10)
SpanWithEvents_WithTimestamp/NeverSample-12 184.0 ± 0% 184.0 ± 0% ~ (p=1.000 n=10) ¹
TraceID_DotString-12 64.00 ± 0% 64.00 ± 0% ~ (p=1.000 n=10) ¹
SpanID_DotString-12 32.00 ± 0% 32.00 ± 0% ~ (p=1.000 n=10) ¹
geomean ² -7.15% ²
¹ all samples are equal
² summaries must be >0 to compute geomean
│ 1727937489-attr-old.txt │ evic-new1728018933.txt │
│ allocs/op │ allocs/op vs base │
RecordingSpanSetAttributes/WithLimit/false-12 15.000 ± 0% 3.000 ± 0% -80.00% (p=0.000 n=10)
RecordingSpanSetAttributes/WithLimit/true-12 20.000 ± 0% 8.000 ± 0% -60.00% (p=0.000 n=10)
SpanEnd-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
TraceStart/with_a_simple_span-12 14.000 ± 0% 2.000 ± 0% -85.71% (p=0.000 n=10)
TraceStart/with_several_links-12 15.000 ± 0% 3.000 ± 0% -80.00% (p=0.000 n=10)
TraceStart/with_attributes-12 16.000 ± 0% 4.000 ± 0% -75.00% (p=0.000 n=10)
SpanProcessorOnEnd/batch:_10,_spans:_10-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorOnEnd/batch:_10,_spans:_100-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorOnEnd/batch:_100,_spans:_10-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorOnEnd/batch:_100,_spans:_100-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
SpanProcessorVerboseLogging-12 155.00 ± 0% 35.00 ± 0% -77.42% (p=0.000 n=10)
SpanLimits/AttributeValueLengthLimit-12 54.00 ± 0% 42.00 ± 0% -22.22% (p=0.000 n=10)
SpanLimits/AttributeCountLimit-12 50.00 ± 0% 38.00 ± 0% -24.00% (p=0.000 n=10)
SpanLimits/EventCountLimit-12 47.00 ± 0% 35.00 ± 0% -25.53% (p=0.000 n=10)
SpanLimits/LinkCountLimit-12 47.00 ± 0% 35.00 ± 0% -25.53% (p=0.000 n=10)
SpanLimits/AttributePerEventCountLimit-12 50.00 ± 0% 38.00 ± 0% -24.00% (p=0.000 n=10)
SpanLimits/AttributePerLinkCountLimit-12 50.00 ± 0% 38.00 ± 0% -24.00% (p=0.000 n=10)
SpanSetAttributesOverCapacity-12 15.000 ± 0% 3.000 ± 0% -80.00% (p=0.000 n=10)
StartEndSpan/AlwaysSample-12 14.000 ± 0% 2.000 ± 0% -85.71% (p=0.000 n=10)
StartEndSpan/NeverSample-12 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_4/AlwaysSample-12 16.000 ± 0% 4.000 ± 0% -75.00% (p=0.000 n=10)
SpanWithAttributes_4/NeverSample-12 3.000 ± 0% 3.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_8/AlwaysSample-12 16.000 ± 0% 4.000 ± 0% -75.00% (p=0.000 n=10)
SpanWithAttributes_8/NeverSample-12 3.000 ± 0% 3.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_all/AlwaysSample-12 16.000 ± 0% 4.000 ± 0% -75.00% (p=0.000 n=10)
SpanWithAttributes_all/NeverSample-12 3.000 ± 0% 3.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithAttributes_all_2x/AlwaysSample-12 16.000 ± 0% 4.000 ± 0% -75.00% (p=0.000 n=10)
SpanWithAttributes_all_2x/NeverSample-12 3.000 ± 0% 3.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_4/AlwaysSample-12 17.000 ± 0% 5.000 ± 0% -70.59% (p=0.000 n=10)
SpanWithEvents_4/NeverSample-12 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_8/AlwaysSample-12 18.000 ± 0% 6.000 ± 0% -66.67% (p=0.000 n=10)
SpanWithEvents_8/NeverSample-12 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_WithStackTrace/AlwaysSample-12 16.000 ± 0% 4.000 ± 0% -75.00% (p=0.000 n=10)
SpanWithEvents_WithStackTrace/NeverSample-12 3.000 ± 0% 3.000 ± 0% ~ (p=1.000 n=10) ¹
SpanWithEvents_WithTimestamp/AlwaysSample-12 17.000 ± 0% 5.000 ± 0% -70.59% (p=0.000 n=10)
SpanWithEvents_WithTimestamp/NeverSample-12 4.000 ± 0% 4.000 ± 0% ~ (p=1.000 n=10) ¹
TraceID_DotString-12 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹
SpanID_DotString-12 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹
geomean ² -47.73% ²
¹ all samples are equal
² summaries must be >0 to compute geomean
```
---------
Co-authored-by: Damien Mathieu <42@dmathieu.com >
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2024-10-08 09:43:14 +02:00
Warnar Boekkooi
3cbd967152
Performance improvements for recordingSpan SetAttributes and addOverCapAttrs ( #5864 )
...
Good day,
While working on
https://github.com/open-telemetry/opentelemetry-go/pull/5858 I found
some other possible improvements.
This PR:
- Adds an early return to `SetAttributes` when no attributes are
provided.
- Only increases `s.attributes` to guarantee that there is enough space
for elements to be added.
- Fixes and issue where `truncateAttr` was not used when a attribute was
being updated in `addOverCapAttrs`.
Thanks for reviewing and please let me know if any changes are needed.
---------
Co-authored-by: Damien Mathieu <42@dmathieu.com >
2024-10-07 09:30:29 +02:00
Danny Shemesh
19877b1654
Fix timer channel drain to avoid hanging in Go 1.23 ( #5869 )
...
- Fix timer channel drain to avoid hanging in go1.23 w/ asynctimerchan=0
(https://github.com/open-telemetry/opentelemetry-go/issues/5868 )
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Damien Mathieu <42@dmathieu.com >
2024-10-04 09:48:57 +02:00
Matthieu MOREL
6edc7a63df
[chore]: enable expected-actual rule from testifylint ( #5848 )
...
Testifylint is a linter that provides best practices with the use of
testify.
This PR enables
[expected-actual](https://github.com/Antonboom/testifylint?tab=readme-ov-file#expected-actual )
rule from [testifylint](https://github.com/Antonboom/testifylint )
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com >
2024-09-26 12:04:33 +02:00
Matthieu MOREL
d284a86fa5
[chore]: enable error-nil rule from testifylint ( #5843 )
...
Testifylint is a linter that provides best practices with the use of
testify.
This PR enables
[error-nil](https://github.com/Antonboom/testifylint?tab=readme-ov-file#error-nil )
rule from [testifylint](https://github.com/Antonboom/testifylint )
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com >
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2024-09-25 11:07:59 +02:00
Matthieu MOREL
063239fa37
[chore]: enable len and empty rules from testifylint ( #5832 )
...
#### Description
Testifylint is a linter that provides best practices with the use of
testify.
This PR enables
[empty](https://github.com/Antonboom/testifylint?tab=readme-ov-file#empty )
and
[len](https://github.com/Antonboom/testifylint?tab=readme-ov-file#len )
rules from [testifylint](https://github.com/Antonboom/testifylint )
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com >
2024-09-21 08:04:28 -07:00
Damien Mathieu
3e17ef99d6
Allow relying on InstrumentationScope in SpanStub and fix remaining deprecation issues ( #5627 )
...
Rather than the deprecated InstrumentationLibrary
This is a replacement for
https://github.com/open-telemetry/opentelemetry-go/pull/3104 , as after
this, there is no usage of `instrumentation.Library` within the SDK
anymore.
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Sam Xie <sam@samxie.me >
2024-07-24 09:33:07 +02:00
Damien Mathieu
ae6d29f4b1
Refactor Batch Processor benchmark to really test OnEnd ( #5600 )
...
This benchmark was not only testing the batch processor, since it was
starting a span, and ending it.
So the entire process of recording span was being accounted.
This changes the benchmark to only account for the batch processor being
tested, not the entire stack.
Before:
```
pkg: go.opentelemetry.io/otel/sdk/trace
BenchmarkSpanProcessor-10 137320 8696 ns/op 11184 B/op 155 allocs/op
BenchmarkSpanProcessorVerboseLogging-10 135483 8881 ns/op 11184 B/op 155 allocs/op
PASS
ok go.opentelemetry.io/otel/sdk/trace 3.984s
```
After:
```
pkg: go.opentelemetry.io/otel/sdk/trace
BenchmarkSpanProcessorOnEnd/batch:_10,_spans:_10-10 6055572 173.2 ns/op 0 B/op 0 allocs/op
BenchmarkSpanProcessorOnEnd/batch:_10,_spans:_100-10 684236 1733 ns/op 0 B/op 0 allocs/op
BenchmarkSpanProcessorOnEnd/batch:_100,_spans:_10-10 6930391 173.8 ns/op 0 B/op 0 allocs/op
BenchmarkSpanProcessorOnEnd/batch:_100,_spans:_100-10 677128 1731 ns/op 0 B/op 0 allocs/op
BenchmarkSpanProcessorVerboseLogging-10 128823 9318 ns/op 11184 B/op 155 allocs/op
PASS
ok go.opentelemetry.io/otel/sdk/trace 6.763s
```
I haven't touched the verbose logging benchmark, as I suppose a
benchmark with verbose logging could actually benefit from the entire
stack.
I also feel one benchmark testing the entire stack up to there could be
nice.
2024-07-16 09:22:04 +02:00
Damien Mathieu
4987a1dd4b
Split the span start/end benchmarks and test start with links and attributes ( #5554 )
...
I was looking at the trace benchmarks, and noticed this one, which says
it tests "span start", but ending the span is included within the data.
So this change removes ending the span from the computation, and adds a
new benchmark which only computes span end.
benchstat for span start:
```
pkg: go.opentelemetry.io/otel/sdk/trace
│ bench-main │ bench-branch │
│ sec/op │ sec/op vs base │
TraceStart-10 725.6n ± 3% 667.2n ± 2% -8.04% (p=0.000 n=10)
│ bench-main │ bench-branch │
│ B/op │ B/op vs base │
TraceStart-10 704.0 ± 0% 704.0 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
│ bench-main │ bench-branch │
│ allocs/op │ allocs/op vs base │
TraceStart-10 14.00 ± 0% 14.00 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
```
Benchmark for span end:
```
BenchmarkSpanEnd-10 16486819 147.7 ns/op 0 B/op 0 allocs/op
```
2024-06-28 11:51:09 +02:00
Damien Mathieu
6d45f283c7
Add errorlint linter ( #5535 )
...
This is the last PR adding missing linters, adding
[errorlint](https://github.com/polyfloyd/go-errorlint ).
Co-authored-by: Sam Xie <sam@samxie.me >
2024-06-25 10:55:00 -07:00
Damien Mathieu
f6a5aa2c3f
Add unparam linter ( #5531 )
...
This adds the [unparam](https://github.com/mvdan/unparam ) linter.
Co-authored-by: Sam Xie <sam@samxie.me >
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2024-06-21 16:02:07 -07:00
Fools
ffe855df33
Fix IDGenerator may generate zero TraceId / SpanId ( #5514 )
...
# Description
Fix #5462
## Type of change
add a loop to generate the spanID and traceID.
the loop will not stop until it generate a valid ID
- [x] Bug fix (non-breaking change which fixes an issue)
---------
Co-authored-by: Damien Mathieu <42@dmathieu.com >
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2024-06-18 15:57:45 -07:00
ttoad
30e82e01b6
trace: Use non-generic to replace newEvictedQueue in trace.start to reduce memory usage. ( #5497 )
...
benchstat:
```
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/sdk/trace
│ old │ new │
│ sec/op │ sec/op vs base │
TraceStart-10 950.6n ± 1% 641.0n ± 0% -32.57% (p=0.000 n=10)
│ old │ new │
│ B/op │ B/op vs base │
TraceStart-10 1040.0 ± 0% 704.0 ± 0% -32.31% (p=0.000 n=10)
│ old │ new │
│ allocs/op │ allocs/op vs base │
TraceStart-10 20.00 ± 0% 14.00 ± 0% -30.00% (p=0.000 n=10)
```
---------
Co-authored-by: Damien Mathieu <damien.mathieu@elastic.co >
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2024-06-17 07:39:03 -07:00
Tyler Yahn
6a0fa3c911
Upgrade semconv use to v1.26.0 ( #5490 )
...
Follow up to #5476
2024-06-06 09:36:59 -07:00
Tyler Yahn
1bcb778c28
Move MonotonicEndTime to only use ( #5443 )
...
Have the code definition live next to its usage.
Co-authored-by: Sam Xie <sam@samxie.me >
2024-05-31 12:37:38 +02:00
Tyler Yahn
5bfa9c55be
Log warning when a trace attribute/event/link is discarded due to limits ( #5434 )
...
Fix #5343
- Update the `evictionQueue` to log when it drops a value
- Update the `evictionQueue` to be declared over an `[T any]` parameter
so it knows what to log when it is dropping a value and to reduce the
`interface{}` allocation
- Add a `clone` method to replace the now unneeded
`interfaceArrayTo*Array` functions.
- Update the `recordingSpan` to log once that is dropped an attribute
when limits are reached.
2024-05-30 11:40:08 -07:00
Tyler Yahn
999c6a07b3
Update all semconv use to v1.25.0 ( #5374 )
...
Resolve #5373
2024-05-19 07:16:33 +02:00
Anton Manakin
c00a51af86
Record links with empty span context ( #5315 )
...
* record links with empty span context
* add global trace state
* fix test comments and changelog
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2024-05-09 13:25:02 -07:00
Harish
1430e3fcd2
Merge Span.AddLink tests ( #5115 )
2024-05-09 07:09:30 +02:00
qcheng
554282d3e4
trace: Add Span.AddLink method ( #5032 )
2024-03-28 08:35:15 +01:00
Damien Mathieu
edb788bf49
Add READMEs to every package ( #5103 )
2024-03-26 20:13:54 +01:00
Kevin Burke
8b147470f4
sdk/trace: fix spelling errors ( #4996 )
2024-03-25 13:10:08 +01:00
Robert Pająk
7dea232a46
[chore] Simplify the license header ( #4987 )
2024-02-29 07:05:28 +01:00
Tyler Yahn
561714acb2
Drop support for Go 1.20 ( #4967 )
...
* Update README.md
* Remove 1.20 support from CI workflows
* Update all go mod
* Add changelog entry
* Update go mod tidy target
* Run go mod tidy
* Replace sliceEqualFunc with slices.EqualFunc
* Replace grow with slices.Grow
* Replace ensureAttributesCapacity with slices.Grow
* Replace conditional with min
* Use slices module for slice comparison in metricdatatest
2024-02-25 10:48:32 -08:00
Tyler Yahn
22a4f9cc55
Export internal/global.getLogger ( #4969 )
...
* Export getLogger
Refactor the declaration of globalLogger to incorporate the logic of
init() so there is no data race between GetLogger and init being called.
* Use GetLogger in log testing
* Restore logger in batch span processor testing
* Remove unused URL in globalLogger doc
2024-02-25 07:27:44 -08:00
Charlie Le
693eb7dbbb
Fix typos in docs and comments ( #4940 )
...
Ignoring words that would have renamed
- nam. -> name
- ans -> and
2024-02-17 13:36:41 +01:00
Robert Pająk
15b3f4d776
Fix TestWithIDGenerator ( #4894 )
2024-02-09 09:01:32 +01:00
Alex Boten
8778c38832
docs: minor update to docstring ( #4833 )
...
Signed-off-by: Alex Boten <aboten@lightstep.com >
2024-01-19 15:18:16 +01:00
Liz Fong-Jones
4491b39db2
sdk/trace: use slices.Grow() to avoid excessive runtime.growslice() ( #4818 )
...
* sdk/trace: use slices.Grow() to avoid excessive runtime.growslice()
* go1.20 compat
* update go.mod/sum
* Update CHANGELOG.md
* Revert "update go.mod/sum"
This reverts commit 1e4fcfa86c .
* inline slices.Grow as ensureAttributesCapacity
* fix comment
* add bench
* fix inlining
* Apply suggestions from code review
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Damien Mathieu <42@dmathieu.com >
* add ReportAllocs
* add benchmark variations with lower limit
* bugfix: we always want to set cap, just the value is a min()
* lint
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Damien Mathieu <42@dmathieu.com >
2024-01-12 13:42:36 -08:00
Robert Pająk
01472db75f
Upgrade use of semconv to v1.24.0 ( #4754 )
2024-01-11 12:56:07 +01:00
Robert Pająk
8e756513a6
sdk/metric: Record measurements when context is done ( #4671 )
2023-12-15 19:14:16 +01:00