Skip to content

Commit e0a3322

Browse files
committed
Fix runtime error reporting in Otel manager (#6793)
(cherry picked from commit 371399c)
1 parent aa81784 commit e0a3322

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

internal/pkg/otel/manager/manager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func (m *OTelManager) Run(ctx context.Context) error {
115115
// pass the error to the errCh so the coordinator, unless it's a cancel error
116116
if !errors.Is(err, context.Canceled) {
117117
select {
118-
case m.errCh <- nil:
118+
case m.errCh <- err:
119119
case <-ctx.Done():
120120
}
121121
}

internal/pkg/otel/manager/manager_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,3 +183,44 @@ func TestOTelManager_Run(t *testing.T) {
183183
t.Errorf("otel manager returned unexpected error: %v", runErr)
184184
}
185185
}
186+
187+
func TestOTelManager_ConfigError(t *testing.T) {
188+
ctx, cancel := context.WithCancel(context.Background())
189+
defer cancel()
190+
l, _ := loggertest.New("otel")
191+
m := NewOTelManager(l)
192+
193+
go func() {
194+
err := m.Run(ctx)
195+
require.ErrorIs(t, err, context.Canceled, "otel manager should be cancelled")
196+
}()
197+
198+
// watch is synchronous, so we need to read from it to avoid blocking the manager
199+
go func() {
200+
for {
201+
select {
202+
case <-m.Watch():
203+
case <-ctx.Done():
204+
return
205+
}
206+
}
207+
}()
208+
209+
cfg := confmap.New() // invalid config
210+
m.Update(cfg)
211+
timeoutCh := time.After(time.Second * 5)
212+
var err error
213+
outer:
214+
for {
215+
select {
216+
case e := <-m.Errors():
217+
if e != nil {
218+
err = e
219+
break outer
220+
}
221+
case <-timeoutCh:
222+
break outer
223+
}
224+
}
225+
assert.Error(t, err, "otel manager should have returned an error")
226+
}

0 commit comments

Comments
 (0)