Skip to content

Commit 6eee4e8

Browse files
ningmingxiaofsouza
andauthored
fix:make sure event chan consume quickly to prevent deadlock (#1133)
* fix:make sure event chan consume quickly to prevent deadlock * event: simplify code a bit * event_test: sort events before comparing the lists --------- Co-authored-by: francisco souza <[email protected]>
1 parent c31f614 commit 6eee4e8

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

event.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,13 @@ func (eventState *eventMonitoringState) monitorEvents(c *Client, opts EventsOpti
271271
return
272272
}
273273
if ev == EOFEvent {
274-
eventState.disableEventMonitoring()
274+
go eventState.disableEventMonitoring()
275275
return
276276
}
277-
eventState.updateLastSeen(ev)
278-
eventState.sendEvent(ev)
277+
go func(ev *APIEvents) {
278+
eventState.updateLastSeen(ev)
279+
eventState.sendEvent(ev)
280+
}(ev)
279281
case err = <-eventState.errC:
280282
if errors.Is(err, ErrNoListeners) {
281283
eventState.disableEventMonitoring()

event_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"net/http"
1212
"net/http/httptest"
1313
"os"
14+
"slices"
1415
"strings"
1516
"testing"
1617
"time"
@@ -267,10 +268,15 @@ loop:
267268
t.Fatalf("%s: timed out waiting on events after %d events", testName, i)
268269
}
269270
}
270-
cmpr := cmp.Comparer(func(e1, e2 APIEvents) bool {
271+
cmpInt := func(e1, e2 APIEvents) int {
272+
return int(e1.TimeNano - e2.TimeNano)
273+
}
274+
slices.SortFunc(events, cmpInt)
275+
slices.SortFunc(wantedEvents, cmpInt)
276+
cmpEqual := cmp.Comparer(func(e1, e2 APIEvents) bool {
271277
return e1.Action == e2.Action && e1.Actor.ID == e2.Actor.ID
272278
})
273-
if dff := cmp.Diff(events, wantedEvents, cmpr); dff != "" {
279+
if dff := cmp.Diff(events, wantedEvents, cmpEqual); dff != "" {
274280
t.Errorf("wrong events:\n%s", dff)
275281
}
276282
}

0 commit comments

Comments
 (0)