isFinished-3.lua 888 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --[[
  2. Checks if a job is finished (.i.e. is in the completed or failed set)
  3. Input:
  4. KEYS[1] completed key
  5. KEYS[2] failed key
  6. KEYS[3] job key
  7. ARGV[1] job id
  8. ARGV[2] return value?
  9. Output:
  10. 0 - Not finished.
  11. 1 - Completed.
  12. 2 - Failed.
  13. -1 - Missing job.
  14. ]]
  15. local rcall = redis.call
  16. if rcall("EXISTS", KEYS[3]) ~= 1 then
  17. if ARGV[2] == "1" then
  18. return {-1,"Missing key for job " .. KEYS[3] .. ". isFinished"}
  19. end
  20. return -1
  21. end
  22. if rcall("ZSCORE", KEYS[1], ARGV[1]) then
  23. if ARGV[2] == "1" then
  24. local returnValue = rcall("HGET", KEYS[3], "returnvalue")
  25. return {1,returnValue}
  26. end
  27. return 1
  28. end
  29. if rcall("ZSCORE", KEYS[2], ARGV[1]) then
  30. if ARGV[2] == "1" then
  31. local failedReason = rcall("HGET", KEYS[3], "failedReason")
  32. return {2,failedReason}
  33. end
  34. return 2
  35. end
  36. if ARGV[2] == "1" then
  37. return {0}
  38. end
  39. return 0