Sam Xie
aa1894e09e
Comply with W3C Baggage specification limits ( #7880 )
...
Updates the baggage implementation to comply with
https://www.w3.org/TR/baggage/#limits :
- Changed maxMembers from 180 to 64 (the W3C compliance requirement)
> The resulting baggage-string contains 64 list-members or less.
- Removed maxBytesPerMembers (4096) - this per-member limit was not part
of the W3C spec
- Added limit checking in extractMultiBaggage for multiple baggage
headers:
- Checks combined byte size across all headers (max 8192 bytes)
- Checks combined member count across all headers (max 64 members)
This uses non-deterministic truncation when handling baggage limits.
2026-02-28 20:15:17 +01:00
Oleksandr Redko
3264bf171b
refactor: modernize code ( #7850 )
...
Enable the
[`modernize`](https://golangci-lint.run/docs/linters/configuration/#modernize )
linter in the golangci-lint configuration and fix the reported issues by
running `golangci-lint run --enable-only modernize --fix`. The
`modernize` linter is internally the same as [gopls
modernize](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/modernize ).
Similar to #7089 .
2026-01-30 18:15:17 +01:00
Flc゛
80cb909774
refactor: replace context.Background() with t.Context()/b.Context() in tests ( #7352 )
...
Based on the Go version we currently use, the dependency already
supports 1.24+, which allows using `t.Context()` and `b.Context()` in
unit tests and benchmarks respectively.
- Enable `context-background` and `context-todo` in
[`usetesting`](https://golangci-lint.run/docs/linters/configuration/#usetesting )
- Adjust the code to support linter detection
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
Co-authored-by: Tyler Yahn <codingalias@gmail.com >
Co-authored-by: Damien Mathieu <42@dmathieu.com >
2025-09-23 09:52:45 +02:00
renovate[bot]
83c041a6cd
chore(deps): update module mvdan.cc/gofumpt to v0.9.0 ( #7292 )
...
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| [mvdan.cc/gofumpt](https://redirect.github.com/mvdan/gofumpt ) |
`v0.8.0` -> `v0.9.0` |
[](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>mvdan/gofumpt (mvdan.cc/gofumpt)</summary>
###
[`v0.9.0`](https://redirect.github.com/mvdan/gofumpt/blob/HEAD/CHANGELOG.md#v090---2025-09-02 )
[Compare
Source](https://redirect.github.com/mvdan/gofumpt/compare/v0.8.0...v0.9.0 )
This release is based on Go 1.25's gofmt, and requires Go 1.24 or later.
A new rule is introduced to "clothe" naked returns for the sake of
clarity.
While there is nothing wrong with naming results in function signatures,
using lone `return` statements can be confusing to the reader.
Go 1.25's `ignore` directives in `go.mod` files are now obeyed;
any directories within the module matching any of the patterns
are now omitted when walking directories, such as with `gofumpt -w .`.
Module information is now loaded via Go's [`x/mod/modfile`
package](https://pkg.go.dev/golang.org/x/mod/modfile )
rather than executing `go mod edit -json`, which is way faster.
This should result in moderate speed-ups when formatting many
directories.
</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:eyJjcmVhdGVkSW5WZXIiOiI0MS45MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuOTEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: dmathieu <damien.mathieu@elastic.co >
2025-09-03 10:18:12 +02:00
Matthieu MOREL
982391315f
chore: enable gocritic linter ( #7095 )
...
#### Description
Enable and fixes several rules from
[gocritic](https://golangci-lint.run/usage/linters/#gocritic ) linter
---------
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com >
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2025-07-29 09:20:32 -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
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
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
Damien Mathieu
2c15a77942
Fix lint issues for golangci-lint 1.62.0 ( #5967 )
...
This fixes the new lint issues brough by the golangci-lint upgrade in
https://github.com/open-telemetry/opentelemetry-go/pull/5966
2024-11-13 08:58:59 +01: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
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
38dfcb2330
Ensure codespell failures fail CI ( #5761 )
...
With the `write` option, codespell fixes issues (which is a nice
behavior when we run it locally), but it also returns a 0 status code
(except if some failures couldn't be fixed).
So in order to actually fix the CI on a failing codespell, we need to
ensure the working directory is clean.
2024-09-03 14:50:17 +02:00
Sam Xie
d61bbf18f5
baggage: Accept non-ASCII keys ( #5132 )
...
resolves #4946
I also add additional test cases to cover more lines.
benchmark results:
```
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/baggage
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
New-10 402.3n ± 1% 422.4n ± 6% +4.98% (p=0.000 n=10)
NewMemberRaw-10 10.82n ± 0% 13.90n ± 1% +28.51% (p=0.000 n=10)
Parse-10 803.8n ± 1% 795.0n ± 1% -1.09% (p=0.011 n=10)
String-10 682.6n ± 0% 610.0n ± 2% -10.63% (p=0.000 n=10)
ValueEscape/nothing_to_escape-10 4.856n ± 0% 4.849n ± 0% ~ (p=0.279 n=10)
ValueEscape/requires_escaping-10 22.47n ± 1% 22.36n ± 1% ~ (p=0.342 n=10)
ValueEscape/long_value-10 513.3n ± 1% 510.1n ± 0% -0.62% (p=0.006 n=10)
MemberString-10 430.8n ± 2% 471.3n ± 2% +9.41% (p=0.000 n=10)
geomean 124.5n 128.5n +3.22%
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
New-10 704.0 ± 0% 704.0 ± 0% ~ (p=1.000 n=10) ¹
NewMemberRaw-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Parse-10 888.0 ± 0% 888.0 ± 0% ~ (p=1.000 n=10) ¹
String-10 936.0 ± 0% 840.0 ± 0% -10.26% (p=0.000 n=10)
ValueEscape/nothing_to_escape-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
ValueEscape/requires_escaping-10 16.00 ± 0% 16.00 ± 0% ~ (p=1.000 n=10) ¹
ValueEscape/long_value-10 576.0 ± 0% 576.0 ± 0% ~ (p=1.000 n=10) ¹
MemberString-10 656.0 ± 0% 656.0 ± 0% ~ (p=1.000 n=10) ¹
geomean ² -1.34% ²
¹ all samples are equal
² summaries must be >0 to compute geomean
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
New-10 8.000 ± 0% 8.000 ± 0% ~ (p=1.000 n=10) ¹
NewMemberRaw-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
Parse-10 9.000 ± 0% 9.000 ± 0% ~ (p=1.000 n=10) ¹
String-10 10.000 ± 0% 8.000 ± 0% -20.00% (p=0.000 n=10)
ValueEscape/nothing_to_escape-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
ValueEscape/requires_escaping-10 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹
ValueEscape/long_value-10 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹
MemberString-10 4.000 ± 0% 4.000 ± 0% ~ (p=1.000 n=10) ¹
geomean ² -2.75% ²
¹ all samples are equal
² summaries must be >0 to compute geomean
```
FYI, the old implementation of `NewMemberRaw` didn't verify the value,
so the benchmark result of `NewMemberRaw` is not an apple-to-apple
comparison of `utf8.ValidString` and `validateKey`.
---------
Co-authored-by: Chester Cheung <cheung.zhy.csu@gmail.com >
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2024-08-15 16:50:34 -07:00
Kevin Burke
aba4ccb5a0
baggage: fix grammar error ( #5634 )
2024-07-22 09:15:27 +02:00
Santi Leira
7e0af515e2
baggage: Fix invalid percent-encoded octet sequences ( #5528 )
...
# Goal
Replace the percent encoded octet sequence with the replacement code
point (U+FFFD) when it doesn't match the UTF-8 encoding schema.
Issue: https://github.com/open-telemetry/opentelemetry-go/issues/5519
Current behavior:
```
package main
import (
"fmt"
"log"
"unicode/utf8"
"go.opentelemetry.io/otel/baggage"
)
func main() {
kv := "k=aa%ffcc"
b, err := baggage.Parse(kv)
if err != nil {
log.Fatal(err)
}
val := b.Members()[0].Value()
fmt.Println(len(val)) # 5
fmt.Println(utf8.ValidString(val)) # false
}
```
Expected behavior:
```
package main
import (
"fmt"
"log"
"unicode/utf8"
"go.opentelemetry.io/otel/baggage"
)
func main() {
kv := "k=aa%ffcc"
b, err := baggage.Parse(kv)
if err != nil {
log.Fatal(err)
}
val := b.Members()[0].Value()
fmt.Println(len(val)) # 7
fmt.Println(utf8.ValidString(val)) # true
}
```
## Benchmark
- `go test -bench=BenchmarkParse -count 20 > old.txt`
```
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/baggage
BenchmarkParse-10 1548118 774.3 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1547653 786.0 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1544949 770.5 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1558972 770.2 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1554973 774.7 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1550200 779.6 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1545100 774.3 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1549634 777.5 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1552530 769.6 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1536499 855.0 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1552244 770.4 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1560225 767.4 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1562738 772.3 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1556679 838.9 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1562500 777.1 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1530901 836.5 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1000000 1372 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1534678 780.3 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1366180 822.4 ns/op 864 B/op 8 allocs/op
BenchmarkParse-10 1539852 796.8 ns/op 864 B/op 8 allocs/op
PASS
ok go.opentelemetry.io/otel/baggage 40.839s
```
- `go test -bench=BenchmarkParse -count 20 > new.txt`
```
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/baggage
BenchmarkParse-10 1355893 886.6 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1349192 883.1 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1363053 880.4 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1372404 875.7 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1359979 880.7 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1360497 874.7 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1375520 870.2 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1375268 882.8 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1361998 964.8 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1373461 961.5 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1378065 872.6 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1377290 879.0 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1362094 885.6 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1352175 915.9 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1364914 887.9 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1355782 890.5 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1361848 1245 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1163396 878.8 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1370886 916.6 ns/op 888 B/op 9 allocs/op
BenchmarkParse-10 1340149 1175 ns/op 888 B/op 9 allocs/op
PASS
ok go.opentelemetry.io/otel/baggage 44.347s
```
- `benchstat old.txt new.txt`
```
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/baggage
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
Parse-10 777.3n ± 3% 884.4n ± 4% +13.77% (p=0.000 n=20)
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
Parse-10 864.0 ± 0% 888.0 ± 0% +2.78% (p=0.000 n=20)
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
Parse-10 8.000 ± 0% 9.000 ± 0% +12.50% (p=0.000 n=20)
```
---------
Co-authored-by: Damien Mathieu <42@dmathieu.com >
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2024-07-08 15:01:04 +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
Fabio Bozzo
478f85bb15
fix(baggage): validate chars panic with 0x80 ( #5494 )
...
The validation rule for baggage key/values chars has a N+1 problem with
the unicode value: `0x80`.
For instance, `baggage.NewMemberRaw` could be called with a string value
including the rune `128` and return no error.
Then `baggage.New` would panic on `validateValueChar`:
```
=== RUN TestValidateValueChar
--- FAIL: TestValidateValueChar (0.00s)
panic: runtime error: index out of range [128] with length 128 [recovered]
panic: runtime error: index out of range [128] with length 128
```
---------
Co-authored-by: Sam Xie <sam@samxie.me >
2024-06-17 09:03:57 -07:00
Moises Vega
0fc35e0e93
feat: opt for concatenation instead of using fmt.Sprintf ( #5286 )
...
* feat: opt for concatenation instead of using fmt.Sprintf
* Update Changelog
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Damien Mathieu <damien.mathieu@elastic.co >
2024-05-07 07:19:08 -07:00
Kevin Burke
906c4909fa
baggage: more efficient member validation ( #5214 )
2024-04-19 08:45:54 +02:00
Alex Boten
e055c7d315
[chore] fix typo in baggage.NewMember docs ( #5231 )
...
Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com >
2024-04-18 23:09:51 +02:00
Sam Xie
2f73208044
Fix spelling errors in baggage.go ( #5120 )
...
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2024-04-01 09:35:55 -07:00
Damien Mathieu
edb788bf49
Add READMEs to every package ( #5103 )
2024-03-26 20:13:54 +01:00
Tyler Yahn
a7034da631
Use slices instead of sort pkg ( #4992 )
...
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2024-02-29 13:03:36 -08:00
Robert Pająk
7dea232a46
[chore] Simplify the license header ( #4987 )
2024-02-29 07:05:28 +01:00
Robert Pająk
259143a662
baggage: Add NewMemberRaw and NewKeyValuePropertyRaw ( #4804 )
2024-01-10 14:02:57 +01:00
Robert Pająk
08b856faeb
baggage: Member.String encodes only when necessary ( #4775 )
2023-12-28 18:21:44 +01:00
Robert Pająk
885210bf33
baggage: Fix escaping in Member.String ( #4756 )
...
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2023-12-21 09:16:13 +01:00
Robert Pająk
43bd47de6e
baggage: Fix Parse to validate member value before percent-decoding ( #4755 )
2023-12-19 14:38:58 +01:00
Cristian Velazquez
057f897096
baggage: Improve performance ( #4743 )
2023-12-14 16:48:28 +01:00
Nathan J Mehl
bdb9322ebd
Use url.PathUnescape rather than url.QueryUnescape in baggage parsing ( #4667 )
...
* Use url.PathUnescape rather than url.QueryUnescape
I believe this addresses the majority of the cases described in
https://github.com/open-telemetry/opentelemetry-go/issues/3601
Golang's url.QueryUnescape will render url _path_ elements (e.g. /, +)
as spaces: `foo+bar` is rendered as `foo bar`. Path elements are (as I
read the spec) legal W3C baggage values, and replacing them with spaces
fails the value validation regex.
url.PathEscape allows path elements through unmolested.
Signed-off-by: Nathan J. Mehl <n@oden.io >
* Update CHANGELOG.md
address comments
Co-authored-by: Robert Pająk <pellared@hotmail.com >
---------
Signed-off-by: Nathan J. Mehl <n@oden.io >
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2023-10-31 15:02:17 -07:00
Yuri Shkuro
14b3a985f5
[baggage] Remove unused private field ( #4318 )
...
Signed-off-by: Yuri Shkuro <github@ysh.us >
2023-08-15 09:48:44 -05:00
Mikhail Mazurskiy
f95bee22b9
Use strings.Cut() instead of string.SplitN() ( #4049 )
...
strings.Cut() generates less garbage as it does not allocate the slice to hold parts.
2023-05-17 09:28:44 -07:00
ReStartercc
0963f59955
Fix baggage.NewMember to decode the accepted value ( #3226 )
...
* Fix baggage.NewMember to decode the accepted value
`value` is decoded and stored after validating the input parameters.
Corresponding test cases are modified so that we can make sure `value` is properly encoded before creating Member.
* fix md lint
* add function document to NewMember for value encoding and decoding
* remove redundant comments and fix CHANGELOG.md
* fix wrong PR number in the changelog
* fix wrong PR number
* fix md-lint
Co-authored-by: Chester Cheung <cheung.zhy.csu@gmail.com >
2022-10-18 12:45:04 -07:00
Chester Cheung
30fcf786c3
bugfix: fix baggage set member failed ( #3165 )
...
* fix baggage set member failed
* add unittest
* fix unittest
* rewrite unittest code
2022-09-17 12:54:12 -07:00
Petrie Liu
c2dc940e0b
fix typo ( #2986 )
...
* fix typo
* spell fix
2022-07-02 08:55:14 -07:00
Tyler Yahn
1f5b159161
Use already enabled revive linter and add depguard ( #2883 )
...
* Refactor golangci-lint conf
Order settings alphabetically.
* Add revive settings to golangci conf
* Check blank imports
* Check bool-literal-in-expr
* Check constant-logical-expr
* Check context-as-argument
* Check context-key-type
* Check deep-exit
* Check defer
* Check dot-imports
* Check duplicated-imports
* Check early-return
* Check empty-block
* Check empty-lines
* Check error-naming
* Check error-return
* Check error-strings
* Check errorf
* Stop ignoring context first arg in tests
* Check exported comments
* Check flag-parameter
* Check identical branches
* Check if-return
* Check increment-decrement
* Check indent-error-flow
* Check deny list of go imports
* Check import shadowing
* Check package comments
* Check range
* Check range val in closure
* Check range val address
* Check redefines builtin id
* Check string-format
* Check struct tag
* Check superfluous else
* Check time equal
* Check var naming
* Check var declaration
* Check unconditional recursion
* Check unexported return
* Check unhandled errors
* Check unnecessary stmt
* Check unnecessary break
* Check waitgroup by value
* Exclude deep-exit check in example*_test.go files
2022-05-19 15:15:07 -05:00
Damien Mathieu
cb76cf1b0d
Validate members once, in NewMember ( #2522 )
...
* use NewMember, or specify if the member is not validated when creating new ones
* expect members to already be validated when creating a new package
* add changelog entry
* add an isEmpty field to member and property for quick validation
* rename isEmpty to hasData
So by default, an empty struct really is marked as having no data
* Update baggage/baggage_test.go
Co-authored-by: Aaron Clawson <Aaron.Clawson@gmail.com >
* don't validate the member in parseMember, we alredy ran that validation
We also don't want to use NewMember, as that runs the property
validation again, making the benchmark quite slower
* move changelog entry to the fixed section
* provide the member/property data when returning an invalid error
Co-authored-by: Aaron Clawson <Aaron.Clawson@gmail.com >
2022-02-04 08:19:39 -08:00
Aaron Clawson
5f41868675
Un-escape url coding when parsing baggage. ( #2529 )
...
* un-escape url coding when parsing baggage.
* Added changelog
Co-authored-by: Aaron Clawson <MadVikingGod@users.noreply.github.com >
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2022-01-24 09:17:45 -08:00
José Carlos Chávez
099df58e4e
chore: adds vanity import check. ( #2255 )
...
* chore: adds vanity import check.
* chore: runs vanity import check on ci.
* fix: set right target on CI.
* fix: fixes install for porto.
* fix: install right proto bin.
* chore: list all files insides the tools directory.
* fix: fixes vanity import target
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
* chore(vanity-imports): adds vanity import support.
* fix: fixes internal generation.
* chore: runs go mod tidy in tools.
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
Co-authored-by: Anthony Mirabella <a9@aneurysm9.com >
2021-09-27 22:37:26 -04:00
Tyler Yahn
92551d3933
Prerelease v1.0.0 ( #2250 )
...
* Update versions file for 1.0.0 release
* Prepare stable-v1 for version v1.0.0
* Update trace signal status in documentation
* Update changelog
* Update CHANGELOG.md
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Robert Pająk <pellared@hotmail.com >
2021-09-20 13:02:46 -07:00
Anthony Mirabella
ced177b795
Pre-release 1.0.0-RC1 ( #2013 )
...
* Add versions.yaml to specify module version sets
* Prepare for releasing v1.0.0-RC1
* Update experimental-metrics and bridge module sets to v0.21.0
* Prepare for releasing v0.21.0
* Fixup go.mod version references
* Update version.go
* Update CHANGELOG
* Update godoc references to "pre-GA phase" for RC1 packages
* Update website_docs for 1.0.0-RC1
Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com >
2021-06-18 11:22:16 -04:00
Anderson Queiroz
7a0cee7b3a
Replaces golint by revive and fix newly reported linter issues ( #1946 )
...
* replaces golint by revive and fix newly reported linter issues
* add pull request ID to CHANGELOG.md
* Update internal/matchers/temporal_matcher.go
Co-authored-by: Robert Pająk <pellared@hotmail.com >
* fix pull request issues
* explains why the linter is disabled
* Update semconv/http.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
* Update metric/unit/unit.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
* restores 'example/passthrough/go.sum' to original state
* fix after rebase
* export ErrInvalidAsyncRunner again and add nolint
* Update trace/tracestate.go
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
* Update sdk/metric/sdk.go
Co-authored-by: Aaron Clawson <Aaron.Clawson@gmail.com >
* Fix ContextWithoutBaggage comment
* Fix SpanEndOption comment
Co-authored-by: Robert Pająk <pellared@hotmail.com >
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
Co-authored-by: Aaron Clawson <Aaron.Clawson@gmail.com >
Co-authored-by: Tyler Yahn <codingalias@gmail.com >
2021-06-08 10:10:01 -07:00
Tyler Yahn
4bf6150fa9
Add baggage implementation based on the W3C and OpenTelemetry specification ( #1967 )
...
* Rename baggage context file
* Initial baggage implementation
* Initial tests
* More tests
* Update baggage context functionality
* Add New method to baggage pkg
* Update namedtracer example
* URL encode baggage values
* Refactor and use internal baggage pkg
* Update OpenTracing bridge
* Update baggage propagator
* Fix lint and test errors
* Add changes to changelog
* Apply suggestions from code review
* Rename testcase field per suggestion
* Update test to verify last-one-wins semantics
* Explicitly seed random numbers with static seed in tests
* Parse Member key/value with string split
* Add test for member parse with equal signs in value
* Trim whitespaces for member key/value
2021-06-08 08:06:37 -07:00
Punya Biswal
ecf65d7968
Rename otel/label -> otel/attribute ( #1541 )
...
* Rename otel/label -> otel/attr
Leave the imported name alone, to avoid a large diff and conflicts
* Better import comment
* Update CHANGELOG.md
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
* otel/attr -> otel/attribute
* Missed the changelog entry
* Get rid of import renaming
* Merge remaining conflicts
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
Co-authored-by: Anthony Mirabella <a9@aneurysm9.com >
2021-02-18 12:59:37 -05:00
Krzesimir Nowak
7022c12bfc
Update the package docs for the new API layout ( #1346 )
2020-11-17 10:30:22 -05:00
Krzesimir Nowak
63a11144cf
Move baggage and propagation to separate packages ( #1325 )
...
* Move propagation code to propagation package
* Move baggage code to baggage package
* Update changelog
* Make docs of baggage.Set more clear
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com >
2020-11-13 07:34:24 -08:00