- Updated all component headers and documentation
- Changed navbar and footer branding
- Updated homepage hero badge
- Modified page title in index.html
- Simplified footer text to 'Built with ❤️'
- Consistent V2 capitalization across all references
104 lines
2.6 KiB
Lua
104 lines
2.6 KiB
Lua
--[[
|
|
Completely obliterates a queue and all of its contents
|
|
|
|
Input:
|
|
KEYS[1] meta
|
|
KEYS[2] base
|
|
|
|
ARGV[1] count
|
|
ARGV[2] force
|
|
]]
|
|
|
|
-- This command completely destroys a queue including all of its jobs, current or past
|
|
-- leaving no trace of its existence. Since this script needs to iterate to find all the job
|
|
-- keys, consider that this call may be slow for very large queues.
|
|
|
|
-- The queue needs to be "paused" or it will return an error
|
|
-- If the queue has currently active jobs then the script by default will return error,
|
|
-- however this behaviour can be overrided using the 'force' option.
|
|
local maxCount = tonumber(ARGV[1])
|
|
local baseKey = KEYS[2]
|
|
|
|
local rcall = redis.call
|
|
|
|
-- Includes
|
|
--- @include "includes/removeJobs"
|
|
--- @include "includes/removeListJobs"
|
|
--- @include "includes/removeZSetJobs"
|
|
|
|
local function removeLockKeys(keys)
|
|
for i, key in ipairs(keys) do
|
|
rcall("DEL", baseKey .. key .. ':lock')
|
|
end
|
|
end
|
|
|
|
-- 1) Check if paused, if not return with error.
|
|
if rcall("HEXISTS", KEYS[1], "paused") ~= 1 then
|
|
return -1 -- Error, NotPaused
|
|
end
|
|
|
|
-- 2) Check if there are active jobs, if there are and not "force" return error.
|
|
local activeKey = baseKey .. 'active'
|
|
local activeJobs = getListItems(activeKey, maxCount)
|
|
if (#activeJobs > 0) then
|
|
if(ARGV[2] == "") then
|
|
return -2 -- Error, ExistActiveJobs
|
|
end
|
|
end
|
|
|
|
removeLockKeys(activeJobs)
|
|
maxCount = removeJobs(activeJobs, true, baseKey, maxCount)
|
|
rcall("LTRIM", activeKey, #activeJobs, -1)
|
|
if(maxCount <= 0) then
|
|
return 1
|
|
end
|
|
|
|
local delayedKey = baseKey .. 'delayed'
|
|
maxCount = removeZSetJobs(delayedKey, true, baseKey, maxCount)
|
|
if(maxCount <= 0) then
|
|
return 1
|
|
end
|
|
|
|
local completedKey = baseKey .. 'completed'
|
|
maxCount = removeZSetJobs(completedKey, true, baseKey, maxCount)
|
|
if(maxCount <= 0) then
|
|
return 1
|
|
end
|
|
|
|
local waitKey = baseKey .. 'paused'
|
|
maxCount = removeListJobs(waitKey, true, baseKey, maxCount)
|
|
if(maxCount <= 0) then
|
|
return 1
|
|
end
|
|
|
|
local prioritizedKey = baseKey .. 'prioritized'
|
|
maxCount = removeZSetJobs(prioritizedKey, true, baseKey, maxCount)
|
|
if(maxCount <= 0) then
|
|
return 1
|
|
end
|
|
|
|
local failedKey = baseKey .. 'failed'
|
|
maxCount = removeZSetJobs(failedKey, true, baseKey, maxCount)
|
|
if(maxCount <= 0) then
|
|
return 1
|
|
end
|
|
|
|
if(maxCount > 0) then
|
|
rcall("DEL",
|
|
baseKey .. 'events',
|
|
baseKey .. 'delay',
|
|
baseKey .. 'stalled-check',
|
|
baseKey .. 'stalled',
|
|
baseKey .. 'id',
|
|
baseKey .. 'pc',
|
|
baseKey .. 'meta',
|
|
baseKey .. 'repeat',
|
|
baseKey .. 'metrics:completed',
|
|
baseKey .. 'metrics:completed:data',
|
|
baseKey .. 'metrics:failed',
|
|
baseKey .. 'metrics:failed:data')
|
|
return 0
|
|
else
|
|
return 1
|
|
end
|