File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -294,7 +294,12 @@ func (q *Queue) Dispose() []interface{} {
294294 q .disposed = true
295295 for _ , waiter := range q .waiters {
296296 waiter .response .Add (1 )
297- waiter .ready <- true
297+ select {
298+ case waiter .ready <- true :
299+ // release Poll immediately
300+ default :
301+ // ignore if it's a timeout or in the get
302+ }
298303 }
299304
300305 disposedItems := q .items
Original file line number Diff line number Diff line change @@ -256,6 +256,19 @@ func TestEmptyGetWithDispose(t *testing.T) {
256256 assert .IsType (t , ErrDisposed , err )
257257}
258258
259+ func TestDisposeAfterEmptyPoll (t * testing.T ) {
260+ q := New (10 )
261+
262+ _ , err := q .Poll (1 , time .Millisecond )
263+ assert .IsType (t , ErrTimeout , err )
264+
265+ // it should not hang
266+ q .Dispose ()
267+
268+ _ , err = q .Poll (1 , time .Millisecond )
269+ assert .IsType (t , ErrDisposed , err )
270+ }
271+
259272func TestGetPutDisposed (t * testing.T ) {
260273 q := New (10 )
261274
You can’t perform that action at this time.
0 commit comments