Project

General

Profile

Actions

Bug #21218

closed

SizedQueue not stopping threads in push even when non_block: false

Added by 0raghvendrrao (Raghvendra Rao) 7 days ago. Updated 7 days ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) +YJIT [x86_64-linux]
[ruby-core:121549]

Description

Use this to recreate

3.1.4 :019 > sq.push(1, non_block: true)
 => #<Thread::SizedQueue:0x00007f39e759af60> 
3.1.4 :020 > sq.push(1, non_block: true)
(irb):20:in `push': queue full (ThreadError)
3.1.4 :021 > sq.push(1, non_block: false)                                                                                                                                                                          
(irb):21:in `push': queue full (ThreadError)
3.1.4 :022 > sq.push(1)
----thread waits

When non_block parameter is not passed (neither true/false) only then the threads wait

Updated by jeremyevans0 (Jeremy Evans) 7 days ago

  • Status changed from Open to Rejected

The non_block argument is a positional argument, not a keyword argument, and {non_block: true} is considered true (only nil and false are considered false). You want sq.push(1, false) to explicitly set the non_block argument to false.

Actions

Also available in: Atom PDF

Like0
Like0