Skip to content

Commit

Permalink
Ensure exported struct in sdk/log are not comparable (#5693)
Browse files Browse the repository at this point in the history
Ensure the `Record` and `Provider` continue to be non-comparable.

Restrict `BatchProcessor` and `SimpleProcessor` to be non-comparable.

There is no obvious reason an end-user will need to compare these types,
and we want to keep the possibility of changing the internals without
changing this behavior.

if comparability is required by end-users in the future we can add
`Equal(other T)` methods in the future.
  • Loading branch information
MrAlias authored Aug 9, 2024
1 parent 69e2358 commit c4ebcaa
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- `SimpleProcessor.Enabled` in `go.opentelemetry.io/otel/sdk/log` now returns `false` if the exporter is `nil`. (#5665)
- Update the concurrency requirements of `Exporter` in `go.opentelemetry.io/otel/sdk/log`. (#5666)
- `SimpleProcessor` in `go.opentelemetry.io/otel/sdk/log` synchronizes `OnEmit` calls. (#5666)
- The `SimpleProcessor` type in `go.opentelemetry.io/otel/sdk/log` is no longer comparable. (#5693)
- The `BatchProcessor` type in `go.opentelemetry.io/otel/sdk/log` is no longer comparable. (#5693)

### Fixed

Expand Down
2 changes: 2 additions & 0 deletions sdk/log/batch.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ type BatchProcessor struct {

// stopped holds the stopped state of the BatchProcessor.
stopped atomic.Bool

noCmp [0]func() //nolint: unused // This is indeed used.
}

// NewBatchProcessor decorates the provided exporter
Expand Down
2 changes: 2 additions & 0 deletions sdk/log/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ type LoggerProvider struct {
loggers map[instrumentation.Scope]*logger

stopped atomic.Bool

noCmp [0]func() //nolint: unused // This is indeed used.
}

// Compile-time check LoggerProvider implements log.LoggerProvider.
Expand Down
2 changes: 2 additions & 0 deletions sdk/log/record.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ type Record struct {

attributeValueLengthLimit int
attributeCountLimit int

noCmp [0]func() //nolint: unused // This is indeed used.
}

func (r *Record) addDropped(n int) {
Expand Down
2 changes: 2 additions & 0 deletions sdk/log/simple.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ var _ Processor = (*SimpleProcessor)(nil)
type SimpleProcessor struct {
mu sync.Mutex
exporter Exporter

noCmp [0]func() //nolint: unused // This is indeed used.
}

// NewSimpleProcessor is a simple Processor adapter.
Expand Down

0 comments on commit c4ebcaa

Please sign in to comment.