1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2024-12-30 21:20:04 +02:00
Commit Graph

921 Commits

Author SHA1 Message Date
renovate[bot]
3c32df8c7d
chore(deps): update module golang.org/x/sys to v0.21.0 (#5481)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| golang.org/x/sys | `v0.20.0` -> `v0.21.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fsys/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fsys/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fsys/v0.20.0/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fsys/v0.20.0/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### 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 becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-go).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zODguMSIsInVwZGF0ZWRJblZlciI6IjM3LjM4OC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJTa2lwIENoYW5nZWxvZyIsImRlcGVuZGVuY2llcyJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-04 11:59:31 -07: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
047df28b88
Guard rng in exemplar rand computation (#5456)
Fix #5455

The `math/rand.Rand` type is not safe for concurrent access. Concurrent
measurements, and therefore concurrent exemplar computation, are
allowed. Ensure this concurrent design does not lead to data races with
`rng`.
2024-06-03 11:11:20 +02:00
Robert Pająk
f80064a978
sdk/log: Add processor benchmarks (#5448)
Towards https://github.com/open-telemetry/opentelemetry-go/issues/5219

Towards https://github.com/open-telemetry/opentelemetry-go/issues/5054

This benchmarks are supposed
- Validate the the `Processor` interface design from performance
perspective. E.g. they are used to check if a processor that is
modifying a log record is causing an additional heap allocations.
- Benchmark the processors supported by the SDK.

These are "almost-end-to-end" benchmarks (with noopExporter) so that it
checks the performance of the SDK log processing without the actual
exporting part.

```
cpu: Intel(R) Core(TM) i9-10885H CPU @ 2.40GHz
BenchmarkProcessor/Simple-16         	 1990946	       644.6 ns/op	     417 B/op	       1 allocs/op
BenchmarkProcessor/Batch-16          	  835135	      1211 ns/op	     597 B/op	       0 allocs/op
BenchmarkProcessor/ModifyTimestampSimple-16         	 1782510	       644.3 ns/op	     417 B/op	       1 allocs/op
BenchmarkProcessor/ModifyTimestampBatch-16          	  945699	      1222 ns/op	     637 B/op	       0 allocs/op
BenchmarkProcessor/ModifyAttributesSimple-16        	 1570214	       717.6 ns/op	     465 B/op	       2 allocs/op
BenchmarkProcessor/ModifyAttributesBatch-16         	  768399	      1383 ns/op	     653 B/op	       1 allocs/op
```
2024-06-03 07:14:52 +02: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
fad23ee62c
Remove zeroInstrumentKind (#5433)
It is a duplicate of `instrumentKindUndefined`. Use
`instrumentKindUndefined` instead.
2024-05-30 11:27:07 -07:00
Tyler Yahn
c3569d85d9
Export the Instrument IsEmpty method (#5431)
From
https://github.com/open-telemetry/opentelemetry-go-contrib/pull/5654#discussion_r1617971674

Constructing a view requires an `Instrument` to be constructed. Given
`NewView` will not return an error directly when an empty instrument is
passed, it may be ideal for users to check this prior to making the
call. Instead of having all use-cases copy this code, export it so they
can just call the method.
2024-05-30 07:50:34 -07:00
Anton Manakin
8d4d3c875c
sdk/log: Fix TestBatchProcessor/ForceFlush/ErrorPartialFlush flaky test (#5416)
Fix #5342

Run of `go test -v -timeout 10s -short -count=10000 ./...
-run='TestBatchProcessor/ForceFlush/ErrorPartialFlush'`
**Before**:
Failed with `panic: test timed out after 10s`
**After**:
Passed

Problem was with `bufferExporter.input` chan. 
In test expected:
> 1 export being performed, 1 export in buffer chan, >1 batch

But buffer chan wasn't checked. Now we ensure, that record is in buffer
chan

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2024-05-30 07:40:19 -07:00
Anton Manakin
982e96dd9b
sdk/log: Fix TestBatchProcessor/DroppedLogs flaky test (#5421)
Fix #5384

Run of `go test  -count=1000000 -run="TestBatchProcessor/DroppedLogs"`
**Before**:
Failed with either `Condition never satisfied` or panic
**After**:
Passed

First, bytes.Buffer is not thread-safe, so writing log and reading
(`bytes.String()`) caused panic. Added `concurrentBuffer`
Second, fixed flaky test with 4 records:
1. Record goes to `testExporter.Export` function and blocks in this
function because of `ExportTrigger`
(19ee6d4775/sdk/log/exporter_test.go (L87))
2. Record goes to `bufferExporter.input`
(7c5e64cccc/sdk/log/exporter.go (L129))
3. Record goes to `BatchProcessor.q` queue and it could not be enqueued
to export, because `bufferExporter.input` is full
4. Record goes to `BatchProcessor.q` and because of overfill, drops
third record

---------

Co-authored-by: Sam Xie <sam@samxie.me>
2024-05-29 11:19:57 -07: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
renovate[bot]
7c5e64cccc
chore(deps): update dependency codespell to v2.3.0 (#5409)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Robert Pająk <pellared@hotmail.com>
2024-05-24 18:09:31 +02:00
Robert Pająk
bd24d549b6
sdk/log: Fix BenchmarkLoggerNewRecord to not drop attributes (#5407)
Leftover after
https://github.com/open-telemetry/opentelemetry-go/pull/5230

We want to have the benchmarks working with 5+ attributes as this is
when allocations kick in.

Before changes:
```
BenchmarkLoggerNewRecord/5_attributes-16         	 4016042	       309.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkLoggerNewRecord/10_attributes-16        	 2150197	       543.4 ns/op	       0 B/op	       0 allocs/op
```

After changes:
```
BenchmarkLoggerNewRecord/5_attributes-16         	 3779966	       311.1 ns/op	       0 B/op	       0 allocs/op
BenchmarkLoggerNewRecord/10_attributes-16        	 1000000	      1314 ns/op	     610 B/op	       4 allocs/op
```
2024-05-24 08:07:56 +02:00
renovate[bot]
8ea894949f
fix(deps): update module github.com/go-logr/logr to v1.4.2 (#5393)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [github.com/go-logr/logr](https://togithub.com/go-logr/logr) |
`v1.4.1` -> `v1.4.2` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgo-logr%2flogr/v1.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgo-logr%2flogr/v1.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgo-logr%2flogr/v1.4.1/v1.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgo-logr%2flogr/v1.4.1/v1.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>go-logr/logr (github.com/go-logr/logr)</summary>

### [`v1.4.2`](https://togithub.com/go-logr/logr/releases/tag/v1.4.2)

[Compare
Source](https://togithub.com/go-logr/logr/compare/v1.4.1...v1.4.2)

#### What's Changed

- Fix lint: named but unused params by
[@&#8203;thockin](https://togithub.com/thockin) in
[https://github.com/go-logr/logr/pull/268](https://togithub.com/go-logr/logr/pull/268)
- Add a Go report card, fix lint by
[@&#8203;thockin](https://togithub.com/thockin) in
[https://github.com/go-logr/logr/pull/271](https://togithub.com/go-logr/logr/pull/271)
- funcr: Handle nested empty groups properly by
[@&#8203;thockin](https://togithub.com/thockin) in
[https://github.com/go-logr/logr/pull/274](https://togithub.com/go-logr/logr/pull/274)

##### Dependencies:

- build(deps): bump github/codeql-action from 3.22.11 to 3.22.12 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/254](https://togithub.com/go-logr/logr/pull/254)
- build(deps): bump github/codeql-action from 3.22.12 to 3.23.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/256](https://togithub.com/go-logr/logr/pull/256)
- build(deps): bump actions/upload-artifact from 4.0.0 to 4.1.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/257](https://togithub.com/go-logr/logr/pull/257)
- build(deps): bump github/codeql-action from 3.23.0 to 3.23.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/259](https://togithub.com/go-logr/logr/pull/259)
- build(deps): bump actions/upload-artifact from 4.1.0 to 4.2.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/260](https://togithub.com/go-logr/logr/pull/260)
- build(deps): bump actions/upload-artifact from 4.2.0 to 4.3.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/263](https://togithub.com/go-logr/logr/pull/263)
- build(deps): bump github/codeql-action from 3.23.1 to 3.23.2 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/262](https://togithub.com/go-logr/logr/pull/262)
- build(deps): bump github/codeql-action from 3.23.2 to 3.24.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/264](https://togithub.com/go-logr/logr/pull/264)
- build(deps): bump actions/upload-artifact from 4.3.0 to 4.3.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/266](https://togithub.com/go-logr/logr/pull/266)
- build(deps): bump golangci/golangci-lint-action from 3.7.0 to 4.0.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/267](https://togithub.com/go-logr/logr/pull/267)
- build(deps): bump github/codeql-action from 3.24.0 to 3.24.3 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/270](https://togithub.com/go-logr/logr/pull/270)
- build(deps): bump github/codeql-action from 3.24.3 to 3.24.5 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/272](https://togithub.com/go-logr/logr/pull/272)
- build(deps): bump github/codeql-action from 3.24.5 to 3.24.6 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/275](https://togithub.com/go-logr/logr/pull/275)
- build(deps): bump actions/checkout from 4.1.1 to 4.1.2 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/276](https://togithub.com/go-logr/logr/pull/276)
- build(deps): bump github/codeql-action from 3.24.6 to 3.24.7 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/277](https://togithub.com/go-logr/logr/pull/277)
- build(deps): bump github/codeql-action from 3.24.7 to 3.24.9 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/278](https://togithub.com/go-logr/logr/pull/278)
- build(deps): bump github/codeql-action from 3.24.9 to 3.24.10 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/279](https://togithub.com/go-logr/logr/pull/279)
- build(deps): bump actions/upload-artifact from 4.3.1 to 4.3.2 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/280](https://togithub.com/go-logr/logr/pull/280)
- build(deps): bump actions/checkout from 4.1.2 to 4.1.3 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/281](https://togithub.com/go-logr/logr/pull/281)
- build(deps): bump github/codeql-action from 3.24.10 to 3.25.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/282](https://togithub.com/go-logr/logr/pull/282)
- build(deps): bump github/codeql-action from 3.25.1 to 3.25.3 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/283](https://togithub.com/go-logr/logr/pull/283)
- build(deps): bump golangci/golangci-lint-action from 4.0.0 to 5.0.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/284](https://togithub.com/go-logr/logr/pull/284)
- build(deps): bump actions/checkout from 4.1.3 to 4.1.4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/285](https://togithub.com/go-logr/logr/pull/285)
- build(deps): bump actions/upload-artifact from 4.3.2 to 4.3.3 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/286](https://togithub.com/go-logr/logr/pull/286)
- build(deps): bump actions/setup-go from 5.0.0 to 5.0.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/288](https://togithub.com/go-logr/logr/pull/288)
- build(deps): bump golangci/golangci-lint-action from 5.0.0 to 5.3.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/289](https://togithub.com/go-logr/logr/pull/289)
- build(deps): bump golangci/golangci-lint-action from 5.3.0 to 6.0.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/293](https://togithub.com/go-logr/logr/pull/293)
- build(deps): bump github/codeql-action from 3.25.3 to 3.25.4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/292](https://togithub.com/go-logr/logr/pull/292)
- build(deps): bump actions/checkout from 4.1.4 to 4.1.5 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/291](https://togithub.com/go-logr/logr/pull/291)
- build(deps): bump ossf/scorecard-action from 2.3.1 to 2.3.3 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/290](https://togithub.com/go-logr/logr/pull/290)
- build(deps): bump github/codeql-action from 3.25.4 to 3.25.5 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/294](https://togithub.com/go-logr/logr/pull/294)
- build(deps): bump actions/checkout from 4.1.5 to 4.1.6 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/go-logr/logr/pull/295](https://togithub.com/go-logr/logr/pull/295)

**Full Changelog**:
https://github.com/go-logr/logr/compare/v1.4.1...v1.4.2

</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 becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-go).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbIlNraXAgQ2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 13:58:14 -07:00
Tyler Yahn
281aeb5c64
Recheck log message in TestBatchProcessor (#5386)
Fix #5384

On single-threaded, or in general slow, systems where the log message
may not be emitted, use assert.Everything to allow multiple lookups for
the expected log message.

Co-authored-by: Sam Xie <sam@samxie.me>
2024-05-21 13:28:05 -07:00
Tyler Yahn
5661ff0ded
Release v1.27.0/v0.49.0/v0.3.0 (#5392)
This release includes the first beta release of the OpenTelemetry Logs
Bridge API and SDK for Go.

### Added

- Add example for `go.opentelemetry.io/otel/exporters/stdout/stdoutlog`.
(#5242)
- Add `RecordFactory` in `go.opentelemetry.io/otel/sdk/log/logtest` to
facilitate testing exporter and processor implementations. (#5258)
- Add `RecordFactory` in `go.opentelemetry.io/otel/log/logtest` to
facilitate testing bridge implementations. (#5263)
- The count of dropped records from the `BatchProcessor` in
`go.opentelemetry.io/otel/sdk/log` is logged. (#5276)
- Add metrics in the `otel-collector` example. (#5283)
- Add the synchronous gauge instrument to
`go.opentelemetry.io/otel/metric`. (#5304)
- An `int64` or `float64` synchronous gauge instrument can now be
created from a `Meter`.
- All implementations of the API
(`go.opentelemetry.io/otel/metric/noop`,
`go.opentelemetry.io/otel/sdk/metric`) are updated to support this
instrument.
- Add logs to `go.opentelemetry.io/otel/example/dice`. (#5349)

### Changed

- The `Shutdown` method of `Exporter` in
`go.opentelemetry.io/otel/exporters/stdout/stdouttrace` ignores the
context cancellation and always returns `nil`. (#5189)
- The `ForceFlush` and `Shutdown` methods of the exporter returned by
`New` in `go.opentelemetry.io/otel/exporters/stdout/stdoutmetric` ignore
the context cancellation and always return `nil`. (#5189)
- Apply the value length limits to `Record` attributes in
`go.opentelemetry.io/otel/sdk/log`. (#5230)
- De-duplicate map attributes added to a `Record` in
`go.opentelemetry.io/otel/sdk/log`. (#5230)
- `go.opentelemetry.io/otel/exporters/stdout/stdoutlog` won't print
timestamps when `WithoutTimestamps` option is set. (#5241)
- The `go.opentelemetry.io/otel/exporters/stdout/stdoutlog` exporter
won't print `AttributeValueLengthLimit` and `AttributeCountLimit` fields
now, instead it prints the `DroppedAttributes` field. (#5272)
- Improved performance in the `Stringer` implementation of
`go.opentelemetry.io/otel/baggage.Member` by reducing the number of
allocations. (#5286)
- Set the start time for last-value aggregates in
`go.opentelemetry.io/otel/sdk/metric`. (#5305)
- The `Span` in `go.opentelemetry.io/otel/sdk/trace` will record links
without span context if either non-empty `TraceState` or attributes are
provided. (#5315)
- Upgrade all dependencies of `go.opentelemetry.io/otel/semconv/v1.24.0`
to `go.opentelemetry.io/otel/semconv/v1.25.0`. (#5374)

### Fixed

- Comparison of unordered maps for
`go.opentelemetry.io/otel/log.KeyValue` and
`go.opentelemetry.io/otel/log.Value`. (#5306)
- Fix the empty output of `go.opentelemetry.io/otel/log.Value` in
`go.opentelemetry.io/otel/exporters/stdout/stdoutlog`. (#5311)
- Split the behavior of `Recorder` in
`go.opentelemetry.io/otel/log/logtest` so it behaves as a
`LoggerProvider` only. (#5365)
- Fix wrong package name of the error message when parsing endpoint URL
in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`.
(#5371)
- Identify the `Logger` returned from the global `LoggerProvider` in
`go.opentelemetry.io/otel/log/global` with its schema URL. (#5375)
2024-05-21 10:59:36 -07:00
Tyler Yahn
0d3dddc17f
Fix exported instrument kind const value change (#5385)
#5304 introduced the following incompatible changes:

- `InstrumentKindObservableCounter`: value changed from 4 to 5
- `InstrumentKindObservableGauge`: value changed from 6 to 7
- `InstrumentKindObservableUpDownCounter`: value changed from 5 to 6

This reverts that change, making `InstrumentKindGauge` explicitly `7`.

Additionally, this removes the use of `iota` to prevent this kind of
breaking change from being accidentally introduced in the future.
2024-05-21 08:46:38 -07:00
Tyler Yahn
999c6a07b3
Update all semconv use to v1.25.0 (#5374)
Resolve #5373
2024-05-19 07:16:33 +02:00
Tyler Yahn
dafe137bbe
Add the synchronous gauge to the metric API and SDK (#5304)
Resolve #5225 

The specification has [added a synchronous gauge
instrument](https://github.com/open-telemetry/opentelemetry-specification/pull/3540).
That instrument has now been
[stabilized](https://github.com/open-telemetry/opentelemetry-specification/pull/4019),
and that stabilization is included in the [next
release](https://github.com/open-telemetry/opentelemetry-specification/pull/4034).

This adds the new synchronous gauge instrument to the metric API and all
implementation we publish.

This change will be a breaking change for any SDK developer. The
`embedded` package is updated to ensure our compatibility guarantees are
meet.

---------

Co-authored-by: David Ashpole <dashpole@google.com>
2024-05-16 09:56:40 -07:00
Robert Pająk
7ba796cb39
sdk/log: Document how Processor and Exporter interfaces can be extended (#5347) 2024-05-11 17:21:33 +02:00
Tyler Yahn
69800ee189
Support Delta & Cumulative temporality for LastValue aggregates (#5305)
* Add delta/cumulative/precomputed LastValue agg

* Add cumulative testing

* Add precomputed testing

* Add changelog entry
2024-05-10 07:19:46 -07: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
Tyler Yahn
9e7d7446c3
Test metric aggregate times (#5323) 2024-05-09 20:11:32 +02:00
Harish
1430e3fcd2
Merge Span.AddLink tests (#5115) 2024-05-09 07:09:30 +02:00
Tyler Yahn
ae06a80417
Log records dropped by the BatchProcessor (#5276)
* Add dropped count to queue

* Log dropped records

* Add changelog entry

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2024-05-08 07:42:09 -07:00
Tyler Yahn
2f662dbe13
Refactor exemplars to not use generic argument (#5285)
* Refactor exemplars to not use generic argument

* Update internal/aggregate

* Update metric SDK

* Test exemplar value type

* Add TestCollectExemplars

* Fix lint

---------

Co-authored-by: Sam Xie <sam@samxie.me>
2024-05-07 08:12:59 -07:00
Damien Mathieu
f8b9fe3dbe
Emit attributes slices as their json representation (#5159)
* emit slices as their json representation

* add changelog

* fix resource tests

* indicate invalid slice if we couldn't turn them into json

* move changelog entry to the unreleased section

---------

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2024-05-07 07:42:07 -07:00
Tyler Yahn
36bee9356a
Use reflect to construct a Record in logtest (#5275)
* Use reflect to construct Record

* Fix merge

* Fix merge
2024-05-06 09:03:14 -07:00
OpenTelemetry Bot
c25eeeadca
dependabot updates Sun May 5 15:58:11 UTC 2024 (#5300)
build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /exporters/otlp/otlptrace/otlptracehttp
build(deps): bump codecov/codecov-action from 4.3.0 to 4.3.1
build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /exporters/otlp/otlptrace
build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /exporters/otlp/otlptrace/otlptracegrpc
build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /exporters/prometheus
build(deps): bump golang.org/x/sys from 0.19.0 to 0.20.0 in /sdk
build(deps): bump github.com/golangci/golangci-lint from 1.57.2 to 1.58.0 in /internal/tools
build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /exporters/otlp/otlpmetric/otlpmetrichttp
build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /exporters/otlp/otlplog/otlploghttp
build(deps): bump github.com/openzipkin/zipkin-go from 0.4.2 to 0.4.3 in /exporters/zipkin
build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc
2024-05-05 09:16:04 -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
97948259ec
Use empty resource when RecordFactory.Resource nil (#5264) 2024-04-28 19:07:43 +02:00
Alex Boten
c9c15038ba
docs: update variable name in documentation (#5270)
Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>
2024-04-26 15:01:19 -07:00
dockercui
24d36d6931
chore: fix function names in comment (#5262)
Signed-off-by: dockercui <dockercui@aliyun.com>
2024-04-26 10:11:23 +02:00
Sam Xie
19ee6d4775
Fix flaky test TestBufferExporter/Shutdown/ContextCancelled (#5261) 2024-04-25 17:46:39 +02:00
Robert Pająk
df455db04d
sdk/log/logtest: Add RecordFactory (#5258) 2024-04-25 07:09:34 +02:00
Sam Xie
9656d0afa7
Release 1.26.0/0.48.0/0.2.0-alpha (#5260)
* Bump versions in versions.yaml

* Prepare stable-v1 for version v1.26.0

* Prepare experimental-metrics for version v0.48.0

* Prepare experimental-logs for version v0.2.0-alpha

* Prepare experimental-schema for version v0.0.9

* Update CHANGELOG

* Unbump experimental-schema

* Update CHANGELOG.md

Co-authored-by: Robert Pająk <pellared@hotmail.com>

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2024-04-24 07:27:22 -07:00
Tyler Yahn
29e1c7e3e4
Add custom ring implementation to the BatchProcessor (#5237) 2024-04-24 12:07:15 +02:00
Robert Pająk
baeb560673
sdk/log: Fix doc for LoggerProvider.ForceFlush and LoggerProvider.Shutdown (#5259) 2024-04-23 20:19:05 +02:00
Tyler Yahn
b34cfc47c4
Default implementation for empty BatchProcessor (#5239)
Ensure an empty BatchProcessor does not panic when any method is called.
Default an empty BatchProcessor as being shut down.
2024-04-22 16:21:49 +02:00
Tyler Yahn
94eb27fb40
Rename batching configuration (#5236)
Match the BatchProcessor and name these decls "batch*."
2024-04-19 18:56:31 +02:00
Robert Pająk
ed666f7713
sdk/log: Rename BatchingProcessor to BatchProcessor (#5229) 2024-04-19 08:34:30 +02:00
Tyler Yahn
4af9c20a80
Implement the BatchingProcessor (#5093)
* [WIP] Implement the BatchingProcessor

* Add TestExportSync

* Add TestChunker

* Test export error default to ErrorHandler

* Fix lint

* Fix chunk smaller than size error

* Add batch tests

* Fix lint

* Update OnEmit test

Check the len of records in eventually assertion given that is what we
are going to measure.

* Revert unneeded change to BatchingProcessor doc

* Add batch type

* Refactor testing of batching config

The BatchingProcessor is not expected to ultimately contain
configuration fields for queue size or export parameters (see #5093).
This will break TestNewBatchingProcessorConfiguration which tests the
configuration by evaluating the BatchingProcessor directly.

Instead, test the batchingConfig and rename the test to
TestNewBatchingConfig to match what is being tested.

* Implement the BatchingProcessor without polling

* Add TestBatchingProcessor

* Add ConcurrentSafe test

* Expand Shutdown tests

* Test context canceled for ForceFlush

* Refactor batch to queue

* Use exportSync

* Update docs and naming

* Split buffered export to its own type

* Update comments and naming

* Fix lint

* Remove redundant triggered type

* Add interval polling

* Refactor test structure

* Add custom ring implimementation

* Add BenchmarkBatchingProcessor

* Fix merge

* Remove custom ring impl

* Remove BenchmarkBatchingProcessor

* Update dev docs

* Test nil exporter

* Update OnEmit test

Ensure the poll goroutine will completely flush the queue of batches.

* Test RetriggerFlushNonBlocking

* Update ascii diagram

* Fix flaky OnEmit

* Revert unnecessary change to test pkg name

* Use batching term in docs

* Document EnqueueExport

* Return from EnqueueExport if blocked

Do not wait for the enqueue to succeed.

* Do not drop failed flush log records

* Use cancelable ctx in concurrency test

* Fix comments

* Apply feedback

Do not spawn a goroutine for the flush operation.

* Return true from EnqueueExport when stopped

* Update sdk/log/batch.go

Co-authored-by: Robert Pająk <pellared@hotmail.com>

* Remove TODO

* Comment re-trigger in poll

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2024-04-18 07:48:19 -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
Robert Pająk
054a63fef2
sdk/log: Add options to NewSimpleProcessor (#5185) 2024-04-10 19:47:40 +02:00
Robert Pająk
b9752eb5dc
sdk/log: Exporter has to be concurrent-safe (#5181) 2024-04-09 10:22:50 +02:00
OpenTelemetry Bot
30487e145c
dependabot updates Sat Apr 6 07:01:47 UTC 2024 (#5171)
build(deps): bump golang.org/x/tools from 0.19.0 to 0.20.0 in /internal/tools
build(deps): bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.49.0 to 0.50.0 in /example/dice
build(deps): bump golang.org/x/sys from 0.18.0 to 0.19.0 in /sdk
2024-04-06 09:08:36 +02:00
Tyler Yahn
98d961b141
Clamp batch size <= queue size (#5157) 2024-04-05 16:02:32 -07:00
Tyler Yahn
66284071de
Release v1.25.0/v0.47.0/v0.0.8/v0.1.0-alpha (#5154)
* Bump versions in versions.yaml

* Prepare stable-v1 for version v1.25.0

* Prepare experimental-metrics for version v0.47.0

* Prepare experimental-logs for version v0.1.0-alpha

* Prepare experimental-schema for version v0.0.8

* Update changelog

* Run go mod tidy

* Update CHANGELOG.md

---------

Co-authored-by: Damien Mathieu <damien.mathieu@elastic.co>
Co-authored-by: Robert Pająk <pellared@hotmail.com>
2024-04-05 07:34:02 -07:00
Tyler Yahn
6c6e1e7416
Add queue for BatchingProcessor (#5131) 2024-04-03 13:53:16 +02:00
Tyler Yahn
5449f083aa
Add the bufferExporter (#5119)
* Add the bufferExporter

* Fix TestExportSync

Reset default ErrorHandler

* Comment

* Clean up tests

* Remove context arg from EnqueueExport

* Join wrapped exporter error
2024-04-02 08:36:18 -07:00