1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-02-05 13:15:41 +02:00

7 Commits

Author SHA1 Message Date
Damien Mathieu
12f0db5215
Add walk attributes benchmark (#5547)
This adds a benchmark for `record.WalkAttributes`.

Part of #5054.

```
BenchmarkWalkAttributes/1_attributes-10                 346989372                3.449 ns/op           0 B/op          0 allocs/op
BenchmarkWalkAttributes/10_attributes-10                345712522                3.459 ns/op           0 B/op          0 allocs/op
BenchmarkWalkAttributes/100_attributes-10               349380534                3.455 ns/op           0 B/op          0 allocs/op
BenchmarkWalkAttributes/1000_attributes-10              342041373                3.484 ns/op           0 B/op          0 allocs/op
```
2024-06-27 13:29:38 +02:00
Damien Mathieu
649484ef38
Split the set and add attributes benchmarks (#5546)
This benchmark currently tests two rather different methods within the
same loop, which makes it hard to see what could be causing a
performance degradation.

Related: #5054.

```
BenchmarkSetAddAttributes/SetAttributes-10              14066331                82.80 ns/op           48 B/op          1 allocs/op
BenchmarkSetAddAttributes/AddAttributes-10              19333711               114.7 ns/op             0 B/op          0 allocs/op
```
2024-06-27 13:17:09 +02:00
Anton Manakin
4fc7162e89
sdk/log: Fix counting number of dropped attributes of log.Record (#5464)
Applying attribute limits in `Record` uses value receiver.
But it should add count of dropped attrs.
In this PR I add using of pointer receiver.

Also it's slightly faster with pointer receiver:

```
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/sdk/log
                    │   old.txt   │              new.txt               │
                    │   sec/op    │   sec/op     vs base               │
SetAddAttributes-10   175.7n ± 3%   159.8n ± 4%  -9.08% (p=0.000 n=10)

                    │  old.txt   │            new.txt             │
                    │    B/op    │    B/op     vs base            │
SetAddAttributes-10   48.00 ± 0%   48.00 ± 0%  ~ (p=1.000 n=10) ¹
¹ all samples are equal

                    │  old.txt   │            new.txt             │
                    │ allocs/op  │ allocs/op   vs base            │
SetAddAttributes-10   1.000 ± 0%   1.000 ± 0%  ~ (p=1.000 n=10) ¹
¹ all samples are equal
```
2024-06-04 09:18:14 +02:00
Tyler Yahn
be1b9cfc37
Log a warning when log Record attribute is dropped (#5376)
Fix #5317 

According to the
[specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/sdk.md#logrecord-limits),
there should be a message printed in the SDK's log to indicate to the
user that an attribute was discarded due to such a limit. To prevent
excessive logging, the message must be printed at most once per
`LogRecord` (i.e., not per discarded attribute).

This change centralizes the `Record` dropped field writes and calls a
global logging function. This will at most log once per any `Record`
dropping attributes, meeting the specification requirement.

This does not log once per `Record` when an attribute is dropped. To do
that we would need to maintain state within the `Record` (i.e.
`sync.Mutex` or `sync.Once`). These types cannot be copied, meaning the
`Record` would take on this "no copy" requirement. This seems too
restrictive and with the permissive specification allowing a single log
line, that is the solution added.

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2024-05-28 11:12:53 -07:00
Tyler Yahn
1e357c7c9a
Truncate and de-duplicate log attribute values (#5230)
* Truncate and de-duplicate log attr values

* Fix test in otlploghttp

* Remove duplicate decl of assertKV
2024-04-29 07:51:22 -07:00
Tyler Yahn
dbe27d4147
Replace Record limit methods with DroppedAttributes (#5190)
* Replace Record lim methods with DroppedAttributes

* Add changelog entry

* Add TestRecordDroppedAttributes

* Add TestRecordCompactAttr

* Add an indexPool

* Fix gramatical error

* Apply feedback

Reduce indentation level.

* Apply feedback

Comment compactAttr and deduplicate.

* Deduplicate all attributes when added

* Comment why head is not used

* Clarify comments

* Move TestAllocationLimits to new file

Do not run this test when the race detector is on.

* Comment follow-up task
2024-04-16 11:48:17 -07:00
Tyler Yahn
ca35244789
sdk/log: Implement Record (#5073) 2024-03-14 15:40:48 +01:00