Skip to content

Commit ab70032

Browse files
gnak-yartommyers-elastic
authored andcommitted
[chore][pkg/stanza] Fixed goleak errors on recombine benchmarks (open-telemetry#43117)
#### Description Fixed one of the errors reported in open-telemetry#43044 Two goleak errors I faced from the `recombine` package. One of the errors indicates that `flushLoop` is still running on a goroutine after test finished. This is due to the benchmark tests never call operator's `Stop()`(More precisely, `Transformer.chClose` is never closed), so `flushLoop()` indefinitely runs. Calling `op.Stop()` makes it silent. ``` goleak: Errors on successful test run: found unexpected goroutines: [Goroutine 61 in state select, with github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine.(*Transformer).flushLoop on top of the stack: github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine.(*Transformer).flushLoop(0x14000188a80) /Users/ray.kang/github.com/gnak-yar/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine/transformer.go:62 +0x64 created by github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine.(*Transformer).Start in goroutine 104 /Users/ray.kang/github.com/gnak-yar/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine/transformer.go:56 +0x5c ``` The other error occurs because there's an infinite loop receiving from a channel of `FakeOutput`. Closing the channel resolves the error. ``` Goroutine 103 in state chan receive, with github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine.BenchmarkRecombine.func1 on top of the stack: github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine.BenchmarkRecombine.func1() /Users/ray.kang/github.com/gnak-yar/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine/transformer_test.go:795 +0x2c created by github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine.BenchmarkRecombine in goroutine 21 /Users/ray.kang/github.com/gnak-yar/opentelemetry-collector-contrib/pkg/stanza/operator/transformer/recombine/transformer_test.go:793 +0x498 ``` <!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. --> #### Link to tracking issue Fixes open-telemetry#43044 <!--Describe what testing was performed and which tests were added.--> #### Testing Unit tests
1 parent 90eebf4 commit ab70032

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

pkg/stanza/operator/transformer/recombine/transformer_test.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -791,8 +791,8 @@ func BenchmarkRecombine(b *testing.B) {
791791
require.NoError(b, op.SetOutputs([]operator.Operator{fake}))
792792

793793
go func() {
794-
for {
795-
<-fake.Received
794+
for range fake.Received { //nolint:revive
795+
// Nothing to do
796796
}
797797
}()
798798

@@ -818,6 +818,10 @@ func BenchmarkRecombine(b *testing.B) {
818818
}
819819
op.(*Transformer).flushAllSources(ctx)
820820
}
821+
b.StopTimer()
822+
823+
require.NoError(b, op.Stop())
824+
close(fake.Received)
821825
}
822826

823827
func BenchmarkRecombineLimitTrigger(b *testing.B) {
@@ -835,8 +839,8 @@ func BenchmarkRecombineLimitTrigger(b *testing.B) {
835839
require.NoError(b, op.Start(nil))
836840

837841
go func() {
838-
for {
839-
<-fake.Received
842+
for range fake.Received { //nolint:revive
843+
// Nothing to do
840844
}
841845
}()
842846

@@ -855,6 +859,10 @@ func BenchmarkRecombineLimitTrigger(b *testing.B) {
855859
require.NoError(b, op.ProcessBatch(ctx, []*entry.Entry{start, next}))
856860
op.(*Transformer).flushAllSources(ctx)
857861
}
862+
b.StopTimer()
863+
864+
require.NoError(b, op.Stop())
865+
close(fake.Received)
858866
}
859867

860868
func TestTimeout(t *testing.T) {

0 commit comments

Comments
 (0)