| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- const content = `--[[
- Moves job from active to waiting children set.
- Input:
- KEYS[1] active key
- KEYS[2] wait-children key
- KEYS[3] job key
- KEYS[4] job dependencies key
- KEYS[5] job unsuccessful key
- KEYS[6] stalled key
- KEYS[7] events key
- ARGV[1] token
- ARGV[2] child key
- ARGV[3] timestamp
- ARGV[4] jobId
- ARGV[5] prefix
- Output:
- 0 - OK
- 1 - There are not pending dependencies.
- -1 - Missing job.
- -2 - Missing lock
- -3 - Job not in active set
- -9 - Job has failed children
- ]]
- local rcall = redis.call
- local activeKey = KEYS[1]
- local waitingChildrenKey = KEYS[2]
- local jobKey = KEYS[3]
- local jobDependenciesKey = KEYS[4]
- local jobUnsuccessfulKey = KEYS[5]
- local stalledKey = KEYS[6]
- local eventStreamKey = KEYS[7]
- local token = ARGV[1]
- local timestamp = ARGV[3]
- local jobId = ARGV[4]
- --- Includes
- local function removeLock(jobKey, stalledKey, token, jobId)
- if token ~= "0" then
- local lockKey = jobKey .. ':lock'
- local lockToken = rcall("GET", lockKey)
- if lockToken == token then
- rcall("DEL", lockKey)
- rcall("SREM", stalledKey, jobId)
- else
- if lockToken then
- -- Lock exists but token does not match
- return -6
- else
- -- Lock is missing completely
- return -2
- end
- end
- end
- return 0
- end
- local function removeJobFromActive(activeKey, stalledKey, jobKey, jobId,
- token)
- local errorCode = removeLock(jobKey, stalledKey, token, jobId)
- if errorCode < 0 then
- return errorCode
- end
- local numRemovedElements = rcall("LREM", activeKey, -1, jobId)
- if numRemovedElements < 1 then
- return -3
- end
- return 0
- end
- local function moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
- jobKey, jobId, timestamp, token)
- local errorCode = removeJobFromActive(activeKey, stalledKey, jobKey, jobId, token)
- if errorCode < 0 then
- return errorCode
- end
- local score = tonumber(timestamp)
- rcall("ZADD", waitingChildrenKey, score, jobId)
- rcall("XADD", eventStreamKey, "*", "event", "waiting-children", "jobId", jobId, 'prev', 'active')
- return 0
- end
- if rcall("EXISTS", jobKey) == 1 then
- if rcall("ZCARD", jobUnsuccessfulKey) ~= 0 then
- return -9
- else
- if ARGV[2] ~= "" then
- if rcall("SISMEMBER", jobDependenciesKey, ARGV[2]) ~= 0 then
- return moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
- jobKey, jobId, timestamp, token)
- end
- return 1
- else
- if rcall("SCARD", jobDependenciesKey) ~= 0 then
- return moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
- jobKey, jobId, timestamp, token)
- end
- return 1
- end
- end
- end
- return -1
- `;
- export const moveToWaitingChildren = {
- name: 'moveToWaitingChildren',
- content,
- keys: 7,
- };
- //# sourceMappingURL=moveToWaitingChildren-7.js.map
|