Skip to content

Commit

Permalink
Do not perform redundant job look-up on delete for SortedEntry
Browse files Browse the repository at this point in the history
 * Seperate SortedEntry delete into delete_by_jid and delete_by_score
 * delete_by_score can now take a time range
 * use @_size -= ret instead of zcard
  • Loading branch information
pik committed Aug 2, 2015
1 parent 677c1bf commit f378074
Showing 1 changed file with 36 additions and 24 deletions.
60 changes: 36 additions & 24 deletions lib/sidekiq/api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -369,11 +369,17 @@ def at
end

def delete
@parent.delete(score, jid)
if @value
@parent.delete_by_value(@parent.name, @value)
elsif jid
@parent.delete_by_jid(score, jid)
else
@parent.delete_by_score(score, score)
end
end

def reschedule(at)
@parent.delete(score, jid)
delete
@parent.schedule(at, item)
end

Expand Down Expand Up @@ -520,35 +526,41 @@ def find_job(jid)
end

def delete(score, jid = nil)
if jid
elements = Sidekiq.redis do |conn|
conn.zrangebyscore(name, score, score)
end
jid ? delete_by_jid(score, jid) : delete_by_score(score, score)
end

elements_with_jid = elements.map do |element|
message = Sidekiq.load_json(element)
def delete_by_value(name, value)
Sidekiq.redis do |conn|
ret = conn.zrem(name, value)
@_size -= 1 if ret
ret
end
end

if message["jid"] == jid
_, @_size = Sidekiq.redis do |conn|
conn.multi do
conn.zrem(name, element)
conn.zcard name
end
end
end
end
elements_with_jid.count != 0
else
count, @_size = Sidekiq.redis do |conn|
conn.multi do
conn.zremrangebyscore(name, score, score)
conn.zcard name
def delete_by_jid(score, jid)
elements = Sidekiq.redis do |conn|
conn.zrangebyscore(name, score, score)
end
elements.each do |element|
message = Sidekiq.load_json(element)
if message["jid"] == jid
break Sidekiq.redis do |conn|
ret = conn.zrem(name, element)
@_size -= 1 if ret
ret
end
end
count != 0
false
end
end

def delete_by_score(score_min, score_max)
Sidekiq.redis do |conn|
ret = conn.zremrangebyscore(name, score_min, score_max)
@_size -= ret
ret
end
end
end

##
Expand Down

0 comments on commit f378074

Please sign in to comment.