File tree Expand file tree Collapse file tree 1 file changed +10
-11
lines changed Expand file tree Collapse file tree 1 file changed +10
-11
lines changed Original file line number Diff line number Diff line change @@ -16,7 +16,6 @@ def initialize(queues, redis)
16
16
17
17
@queues = { }
18
18
@redis = redis
19
- @q_list = queues
20
19
21
20
queues . each do |queue |
22
21
key = @redis . is_a? ( Redis ::Namespace ) ? "#{ @redis . namespace } :" : ""
@@ -33,25 +32,25 @@ def initialize(queues, redis)
33
32
def pop ( non_block = false )
34
33
if non_block
35
34
synchronize do
36
- queue_name , payload = @redis . blpop ( * ( queue_names + [ 0 ] ) )
35
+ value = nil
37
36
38
- raise ThreadError unless queue_name && payload
39
- @queues [ queue_name ] . decode ( payload )
37
+ @queues . values . each do |queue |
38
+ begin
39
+ return queue . pop ( true )
40
+ rescue ThreadError
41
+ end
42
+ end
43
+
44
+ raise ThreadError
40
45
end
41
46
else
47
+ queue_names = @queues . values . map { |queue | queue . redis_name }
42
48
synchronize do
43
49
value = @redis . blpop ( *( queue_names + [ 1 ] ) ) until value
44
50
queue_name , payload = value
45
51
@queues [ queue_name ] . decode ( payload )
46
52
end
47
53
end
48
54
end
49
-
50
- private
51
- def queue_names
52
- # possibly refactor this to set an ivar of the list in the constructor.
53
- # We don't need to calculate the list on every call to `pop`.
54
- @q_list . map { |queue | queue . redis_name }
55
- end
56
55
end
57
56
end
You can’t perform that action at this time.
0 commit comments