Projektstart
This commit is contained in:
119
backend/node_modules/bullmq/dist/esm/commands/obliterate-2.lua
generated
vendored
Normal file
119
backend/node_modules/bullmq/dist/esm/commands/obliterate-2.lua
generated
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
--[[
|
||||
Completely obliterates a queue and all of its contents
|
||||
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.
|
||||
|
||||
Input:
|
||||
KEYS[1] meta
|
||||
KEYS[2] base
|
||||
|
||||
ARGV[1] count
|
||||
ARGV[2] force
|
||||
]]
|
||||
|
||||
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 repeatKey = baseKey .. 'repeat'
|
||||
local repeatJobsIds = getZSetItems(repeatKey, maxCount)
|
||||
for i, key in ipairs(repeatJobsIds) do
|
||||
local jobKey = repeatKey .. ":" .. key
|
||||
rcall("DEL", jobKey)
|
||||
end
|
||||
if(#repeatJobsIds > 0) then
|
||||
for from, to in batches(#repeatJobsIds, 7000) do
|
||||
rcall("ZREM", repeatKey, unpack(repeatJobsIds, from, to))
|
||||
end
|
||||
end
|
||||
maxCount = maxCount - #repeatJobsIds
|
||||
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 .. 'marker',
|
||||
baseKey .. 'meta',
|
||||
baseKey .. 'metrics:completed',
|
||||
baseKey .. 'metrics:completed:data',
|
||||
baseKey .. 'metrics:failed',
|
||||
baseKey .. 'metrics:failed:data')
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
end
|
||||
Reference in New Issue
Block a user