35 lines
957 B
Lua
35 lines
957 B
Lua
--[[
|
|
Function to recursively check if there are no locks
|
|
on the jobs to be removed.
|
|
|
|
returns:
|
|
boolean
|
|
]]
|
|
--- @include "destructureJobKey"
|
|
|
|
local function isLocked( prefix, jobId, removeChildren)
|
|
local jobKey = prefix .. jobId;
|
|
|
|
-- Check if this job is locked
|
|
local lockKey = jobKey .. ':lock'
|
|
local lock = rcall("GET", lockKey)
|
|
if not lock then
|
|
if removeChildren == "1" then
|
|
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
|
|
if (#dependencies > 0) then
|
|
for i, childJobKey in ipairs(dependencies) do
|
|
-- We need to get the jobId for this job.
|
|
local childJobId = getJobIdFromKey(childJobKey)
|
|
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
|
|
local result = isLocked( childJobPrefix, childJobId, removeChildren )
|
|
if result then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
return true
|
|
end
|