Skip to content

Commit 933bd8a

Browse files
committed
fix(event-source): Ensure event source is closed once
1 parent f727c23 commit 933bd8a

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

internal/etw/source.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ type EventSource struct {
9090

9191
filter filter.Filter
9292
listeners []kevent.Listener
93+
94+
isClosed bool
9395
}
9496

9597
// NewEventSource creates the new ETW event source.
@@ -251,11 +253,16 @@ func (e *EventSource) Open(config *config.Config) error {
251253
// signal the event callback to stop consuming more events.
252254
// Finally, the trace is stopped along with all event consumers.
253255
func (e *EventSource) Close() error {
256+
if e.isClosed {
257+
return nil
258+
}
259+
254260
for _, consumer := range e.consumers {
255261
if err := consumer.Close(); err != nil {
256262
log.Warnf("couldn't close consumer: %v", err)
257263
}
258264
}
265+
259266
for _, trace := range e.traces {
260267
if !trace.IsStarted() {
261268
continue
@@ -275,6 +282,8 @@ func (e *EventSource) Close() error {
275282

276283
close(e.stop)
277284

285+
e.isClosed = true
286+
278287
return e.sequencer.Shutdown()
279288
}
280289

0 commit comments

Comments
 (0)