From c4ebcaa08d22ff5e127b1ff9aac77d5b117af13e Mon Sep 17 00:00:00 2001 From: Tyler Yahn Date: Fri, 9 Aug 2024 07:31:42 -0700 Subject: [PATCH] Ensure exported struct in `sdk/log` are not comparable (#5693) 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. --- CHANGELOG.md | 2 ++ sdk/log/batch.go | 2 ++ sdk/log/provider.go | 2 ++ sdk/log/record.go | 2 ++ sdk/log/simple.go | 2 ++ 5 files changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2e409349..e6dbb2731 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/sdk/log/batch.go b/sdk/log/batch.go index fd913901c..3faf4d1d4 100644 --- a/sdk/log/batch.go +++ b/sdk/log/batch.go @@ -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 diff --git a/sdk/log/provider.go b/sdk/log/provider.go index eb1d98acf..ede1b77c1 100644 --- a/sdk/log/provider.go +++ b/sdk/log/provider.go @@ -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. diff --git a/sdk/log/record.go b/sdk/log/record.go index a6e50df77..effb30f62 100644 --- a/sdk/log/record.go +++ b/sdk/log/record.go @@ -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) { diff --git a/sdk/log/simple.go b/sdk/log/simple.go index 863be8df7..b426e414f 100644 --- a/sdk/log/simple.go +++ b/sdk/log/simple.go @@ -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.