Skip to content

Commit 2bf3e97

Browse files
committed
use an ivar for destroyed on Queue for performance
Please read the documentation comment on side effects
1 parent 2691d05 commit 2bf3e97

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

lib/resque/queue.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def initialize name, redis, coder = Marshal
2424
@redis_name = "queue:#{@name}"
2525
@redis = redis
2626
@coder = coder
27+
@destroyed = false
2728

2829
@redis.sadd(:queues, @name)
2930
end
@@ -90,14 +91,19 @@ def empty?
9091

9192
# Deletes this Queue from redis. This method is *not* available on the
9293
# stdlib Queue.
94+
#
95+
# If there are multiple queue objects of the same name, Queue A and Queue
96+
# B and you delete Queue A, pushing to Queue B will have unknown side
97+
# effects. Queue A will be marked destroyed, but Queue B will not.
9398
def destroy
9499
@redis.del @redis_name
95100
@redis.srem(:queues, @name)
101+
@destroyed = true
96102
end
97103

98104
# returns +true+ if the queue is destroyed and +false+ if it isn't
99105
def destroyed?
100-
!@redis.sismember(:queues, @name)
106+
@destroyed
101107
end
102108

103109
def encode object

0 commit comments

Comments
 (0)