Skip to content

Instantly share code, notes, and snippets.

@szajbus
Created April 30, 2020 12:15
Show Gist options
  • Save szajbus/5c8c78a891c7748db248ada18440a977 to your computer and use it in GitHub Desktop.
Save szajbus/5c8c78a891c7748db248ada18440a977 to your computer and use it in GitHub Desktop.
Deduplicate verk queue
deduplicate_queue = fn queue, offset ->
{_, deleted_count} =
Verk.Queue.range!(queue, offset)
|> Enum.reduce({MapSet.new(), 0}, fn job, {seen, deleted_count} ->
if MapSet.member?(seen, {job.class, job.args}) do
case Verk.Queue.delete_job(queue, job) do
{:ok, true} -> {seen, deleted_count + 1}
_ -> {seen, deleted_count}
end
else
{MapSet.put(seen, {job.class, job.args}), deleted_count}
end
end)
IO.puts("deleted #{deleted_count} duplicate jobs from #{queue} queue")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment