| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- const content = `--[[
- Extend locks for multiple jobs and remove them from the stalled set if successful.
- Return the list of job IDs for which the operation failed.
- KEYS[1] = stalled key
- ARGV[1] = baseKey
- ARGV[2] = tokens
- ARGV[3] = jobIds
- ARGV[4] = lockDuration (ms)
- Output:
- An array of failed job IDs. If empty, all succeeded.
- ]]
- local rcall = redis.call
- local stalledKey = KEYS[1]
- local baseKey = ARGV[1]
- local tokens = cmsgpack.unpack(ARGV[2])
- local jobIds = cmsgpack.unpack(ARGV[3])
- local lockDuration = ARGV[4]
- local jobCount = #jobIds
- local failedJobs = {}
- for i = 1, jobCount, 1 do
- local lockKey = baseKey .. jobIds[i] .. ':lock'
- local jobId = jobIds[i]
- local token = tokens[i]
- local currentToken = rcall("GET", lockKey)
- if currentToken then
- if currentToken == token then
- local setResult = rcall("SET", lockKey, token, "PX", lockDuration)
- if setResult then
- rcall("SREM", stalledKey, jobId)
- else
- table.insert(failedJobs, jobId)
- end
- else
- table.insert(failedJobs, jobId)
- end
- else
- table.insert(failedJobs, jobId)
- end
- end
- return failedJobs
- `;
- export const extendLocks = {
- name: 'extendLocks',
- content,
- keys: 1,
- };
- //# sourceMappingURL=extendLocks-1.js.map
|